DapperおよびDynamicParameter()

dapper

質問

私はコードを見ていて、それを読むことができません。私はまた重要な事例や例を見つけようとしましたが、その問題を理解するのに役立つ具体的な資料や資料を見つけることができませんでした。誰かが私にコードを読んでもらえますか、それを読むためのドキュメントがあるかどうか。

私の質問は、なぜDapperのオブジェクトであるDynamicParameter()を使う必要があるのか​​ということです。私は=>手段が何であるかもわかりません。

public void validRecord(string fileName, string rawContent, int userId)
{
    Run(conn => conn.Execute("[dbo].[storedProc_GETDone]"
        , new DynamicParameters
            (new Dictionary<string, object>
                {
                    {"fileName", fileName},
                    {"rowContent", rawContent},
                    {"userCreated", userId},
                }), CommandType.StoredProcedure));
}

エキスパート回答

Runはdapperの一部ではありませんが、C#の=>を使ってラムダ式を作成しています。この場合は、 Action<DbConnection>と期待しています。

Run(Action<DbConnection> action) {
    using(var conn = CreateConnection()) {
        conn.Open();
        action(conn);
    }
}

つまり、「私はあなたにつながりを与えようとしています;それで何をしたいのですか?」 - この場合、ストアドプロシージャをExecuteすることを選択しています。

今のところ、あなたの例ではDynamicParametersを使用する利点はないことに注意してください。なぜなら情報はよく知られているからです。

Run(conn => conn.Execute("[dbo].[storedProc_GETDone]",
    new { fileName, rawContent, userCreated = userId },
    CommandType.StoredProcedure));

それはちょうど同様にうまくいくでしょう。したがって、「なぜDynamicParameterを使用する必要があるのですか?このシナリオではありませんが 、特に、手動でSQLを作成する場合は、たとえば次のような場合があります。

if(name != null) {
    sql.Append("and Name = @name ");
    args.Add("name", name);
}


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