Confundido sobre la configuración de parámetros para una consulta SQL

c# dapper orm sql sql-server

Pregunta

Estoy usando Dapper ORM para consultar mi base de datos. Me he familiarizado con la sintaxis de la consulta, pero tengo problemas con los parámetros.

Aquí está la consulta que funciona:

orders = ctx.Query<OrderView>(myQuery, new { Seller = 104386, StatusID = 2, query = "people"});

Esto correlaciona los parámetros en myQuery (@Seller, @StatusID, @query) con estos valores y funciona correctamente.

Sin embargo, en mi programa, genero parámetros sobre la marcha y los List<ObjectParameter> en una List<ObjectParameter> , así que cada parámetro tiene un nombre y un valor. Sin embargo, no puedo hacer que esto funcione correctamente en la consulta. Aquí hay un ejemplo de lo que no funciona:

orders = ctx.Query<OrderView>(myQuery, parameters.toArray());

También intenté convertir eso a List<SqlParameter> pero tampoco funciona. ¿Alguien sabe cómo puedo replicar la consulta de trabajo con mi lista de parámetros?

Respuesta aceptada

ObjectParameter es una cosa EF ( System.Data.Entity.dll ) y no se utiliza en dapper. Desea DynamicParameters , dentro del ensamblador / espacio de nombre de DynamicParameters :

var args = new DynamicParameters();
...
args.Add(name, value); // there are more complex usages, note
...
connection.Query<OrderView>(myQuery, args);

Si quieres tener más control, por ejemplo, realmente quieres usar ObjectParameter , también está bien: simplemente escribes tu propio tipo que implementa SqlMapper.IDynamicParameters , y lo pasas a dapper.



Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow
Licencia bajo: CC-BY-SA with attribution
No afiliado con Stack Overflow