(Questo codice sta usando Dapper Dot Net in C#)parametri dinamici Dapper gettano una SQLException "deve definire variabile scalare" quando non si utilizza oggetti anonimi
questo codice funziona:
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
connection_.Execute(command, new { Name = "myname", Priority = 10 });
Questo codice genera un 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: Deve dichiarare la variabile scalare "@Priority".
Perché?
Interessante; consideriamo i campi per la materializzazione, quindi forse è un po 'incoerente che non permettiamo poi (quelli pubblici, almeno), per la parametrizzazione. Meh ... Hai ragione - è banale da risolvere con l'uso corretto delle proprietà. –
@MarcGravell sembra violare il principio di minima sorpresa. Io voterei per cambiare il comportamento o documentare il requisito. –