Dapper.NET SQL básico parametrizado


Ejemplo

Dapper facilita el seguimiento de las mejores prácticas mediante SQL totalmente parametrizado.

Mesas de bobby

Los parámetros son importantes, por lo que Dapper hace que sea fácil hacerlo bien. Simplemente expresa tus parámetros de la forma normal para tu RDBMS (generalmente @foo ?foo o :foo ) y le das a Dapper un objeto que tiene un miembro llamado foo . La forma más común de hacer esto es con un tipo anónimo:

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

Y eso es. Dapper agregará los parámetros requeridos y todo debería funcionar.

Usando tu modelo de objeto

También puede usar su modelo de objeto existente como parámetro:

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

Dapper usa el texto de comando para determinar qué miembros del objeto agregar: generalmente no agregará elementos innecesarios como Description , IsActive , CreationDate porque el comando que hemos emitido claramente no los involucra, aunque existen casos en los que podría hacer eso, por ejemplo, si su comando contiene:

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

No intenta descubrir que lo anterior es solo un comentario.

Procedimientos almacenados

Los parámetros de los procedimientos almacenados funcionan exactamente igual, excepto que Dapper no puede tratar de determinar qué debe / no debe incluirse, todo lo disponible se trata como un parámetro. Por esa razón, usualmente se prefieren los tipos anónimos:

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