Dapperを '?'と共に使用する

c# dapper db2

質問

Dapperを使ってDB2サーバーと通信しようとしています。 DB2サーバーは、そのままでは名前付きパラメーターをサポートしません。各パラメータのクエリに疑問符が必要です。 Dapperでこれをサポートする方法はありますか?たぶんDapperはすべての@Nameものを置き換えることができ?クエリを呼び出す前に?もしそうなら、Dapperはパラメータを順番に生成しますか?

サポートされていない場合、新しいDB2クライアントドライバは名前付きパラメータをサポートしているようですが、デフォルトではオフになっています。電源を入れる方法がわかりません。私はクライアントのdb2cli.ini [COMMON]セクションにそのパラメーターを追加してみましたが、動作は変わりませんでした。これはOleDBドライバ用でした。

更新日:私はその後、.NETドライバを試してみました。それは変数名を解析しているように見えますが、実行時に私はまだ奇妙なエラーが出ます:

{"ERROR [IBM] [DB2 / NT64] SQL0313Nパラメーター化カーソルのEXECUTEステートメント内の変数の数、OPENステートメント内の変数の数、またはOPENステートメント内の引数の数が等しくありません。必要な値の数。 "}

私の言葉は次のようになります。

INSERT INTO XD.ALERT (PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, :Level, :AlertID, :AlertDesc, :DateTime)

INSERTはEXECUTEとしてカウントされますか?私が言うことができる限り、私は使用されている問い合わせに4つのパラメータとコマンドオブジェクトに4つのパラメータを持っています。 ( SqlMapper.cs直接使用していますが、デバッガですべてを見ることができます。)

人気のある回答

これを試すことができます:

    public void SaveAlert(int? level, int? alertId, string alertDesc, DateTime date)
    {            
        _conn.Execute("INSERT INTO XD.ALERT(PERFORMANCE_ID, CATEGORY, TITLE, DESCRIPTION, DATETIME) VALUES(1234, @Level, @AlertID, @AlertDesc, @DateTime)",                
            new {
                Level = level,
                AlertId = alertId,
                AlertDesc = alertDesc,
                DateTime = date
            });
    }


ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
このKBは合法ですか? はい、理由を学ぶ