Dapper et DynamicParameter ()

dapper

Question

Je regarde le code et je suis incapable de le lire. J'ai également essayé de trouver du matériel et des exemples, mais je n'ai pas pu trouver de documentation spécifique ou susceptible de m'aider à comprendre le problème. Est-ce que quelqu'un peut me lire le code et s'il y a de la documentation pour le lire?

Au début, ma question est de savoir pourquoi nous devons utiliser DynamicParameter() qui est un objet de Dapper. Je ne suis pas non plus sûr de ce qui signifie => .

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));
}

Réponse d'expert

Run ne fait pas partie de dapper, mais => en C # est utilisé pour créer une expression lambda , dans ce cas je pense que c'est une Action<DbConnection> , c’est-à-dire que votre exécution ressemble beaucoup à ceci:

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

c'est à dire que "je vais vous donner un lien; que voulez-vous en faire?" - Dans ce cas, vous choisissez Execute une procédure stockée.

Maintenant, il est intéressant de noter que dans votre exemple, l'utilisation de DynamicParameters ne présente aucun intérêt, car les informations sont bien connues - vous pouvez simplement utiliser:

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

qui fonctionnerait tout aussi bien. Donc, en réponse à "pourquoi avons-nous besoin d'utiliser DynamicParameter - vous ne le faites pas dans ce scénario. Cependant, dans certains cas, vous pouvez le faire - surtout si vous construisez manuellement SQL à la volée, par exemple:

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



Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi
Sous licence: CC-BY-SA with attribution
Non affilié à Stack Overflow
Est-ce KB légal? Oui, apprenez pourquoi