(This code is using Dapper Dot Net in C#)
This code works:
var command = "UPDATE account SET priority_id = @Priority WHERE name = @Name";
connection_.Execute(command, new { Name = "myname", Priority = 10 } );
This code throws a 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: Must declare the scalar variable "@Priority".
Why?
Implement your model with properties, not fields:
class MyAccount
{
public string Name { get; set; }
public int Priority { get; set; }
}
Dapper looks at the properties of the object to get parameters, ignoring fields. Anonymous types work because they are implemented with properties.