(Este código se utiliza apuesto de la red del punto en C#)parámetros dinámicos Dapper lanzan una excepción de SQL "debe definir variable escalar" cuando no utilice objetos anónimos
Este código funciona:
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
connection_.Execute(command, new { Name = "myname", Priority = 10 });
Este código produce una SqlException:
class MyAccount
{
public string Name;
public int Priority;
}
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
var acct = new MyAccount { Name = "helloworld", Priority = 10 };
connection_.Execute(command, acct);
System.Data.SqlClient.SqlException: debe declarar la variable escalar "@Priority".
¿Por qué?
interesante; consideramos campos para la materialización, por lo que tal vez sea un poco inconsistente que no permitamos entonces (públicos, al menos), para la parametrización. Meh ... Tienes razón, es trivial de resolver por el uso correcto de las propiedades. –
@MarcGravell parece violar el principio de menor sorpresa. Yo votaría para cambiar el comportamiento o documentar el requisito. –