Dapper.NET SQL paramétré de base


Exemple

Dapper facilite le suivi des meilleures pratiques grâce à un SQL entièrement paramétré.

Tables Bobby

Les paramètres sont importants, donc dapper facilite la tâche. Vous venez d'exprimer vos paramètres de la manière habituelle pour votre SGBDR (généralement @foo ?foo ou :foo ) et donnez à dapper un objet qui a un membre appelé foo . La méthode la plus courante consiste à utiliser un type anonyme:

int id = 123;
string name = "abc";
connection.Execute("insert [KeyLookup](Id, Name) values(@id, @name)",
    new { id, name });

Et c'est tout. Dapper ajoutera les paramètres requis et tout devrait fonctionner.

Utiliser votre modèle d'objet

Vous pouvez également utiliser votre modèle d'objet existant en tant que paramètre:

KeyLookup lookup = ... // some existing instance
connection.Execute("insert [KeyLookup](Id, Name) values(@Id, @Name)", lookup);

Dapper utilise le texte de commande pour déterminer les membres de l'objet à ajouter - il n'ajoutera généralement pas de choses inutiles telles que Description , IsActive , CreationDate car la commande que nous avons publiée ne les implique pas - bien qu'il y ait des cas où pourrait le faire, par exemple si votre commande contient:

// TODO - removed for now; include the @Description in the insert

Il ne tente pas de comprendre que ce qui précède n'est qu'un commentaire.

Procédures stockées

Les paramètres des procédures stockées fonctionnent exactement de la même manière, sauf que Dapper ne peut pas tenter de déterminer ce qui doit / ne doit pas être inclus - tout ce qui est disponible est traité comme un paramètre. Pour cette raison, les types anonymes sont généralement préférés:

connection.Execute("KeyLookupInsert", new { id, name },
    commandType: CommandType.StoredProcedure);