Dapper.NET SQL parametrico di base

Esempio

Dapper semplifica il seguire le migliori pratiche mediante SQL completamente parametrizzato.

Bobby Tabelle

I parametri sono importanti, quindi dapper rende facile farlo bene. Devi semplicemente esprimere i tuoi parametri nel modo normale per il tuo RDBMS (solitamente @foo ?foo o :foo ) e dare a dapper un oggetto che ha un membro chiamato foo . Il modo più comune per farlo è con un tipo anonimo:

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

E ... questo è tutto. Dapper aggiungerà i parametri richiesti e tutto dovrebbe funzionare.

Usando il tuo modello a oggetti

Puoi anche usare il tuo modello di oggetto esistente come parametro:

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

Dapper usa il comando-testo per determinare quali membri dell'oggetto aggiungere - di solito non aggiunge cose non necessarie come Description , IsActive , CreationDate perché il comando che abbiamo emesso chiaramente non li coinvolge - anche se ci sono casi in cui potrebbe farlo, per esempio se il tuo comando contiene:

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

Non tenta di capire che quanto sopra è solo un commento.

Procedura di archiviazione

I parametri delle stored procedure funzionano esattamente allo stesso modo, ad eccezione del fatto che dapper non può tentare di determinare cosa dovrebbe / non dovrebbe essere incluso - tutto ciò che è disponibile viene trattato come un parametro. Per questo motivo, i tipi anonimi sono generalmente preferiti:

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