Dapper est capable de mapper cette requête à l'objet car
. Il sait quelle propriété dans la voiture va à quelle variable dans la requête.
Car car = new Car();
conn.Execute(
"UPDATE CAR" +
" SET COLOR=@Color,MODEL=@Model" +
" WHERE ID=@Id", car;
Mais puis-je ajouter une autre variable à la requête? Par exemple:
int c = 1000;
conn.Execute(
"UPDATE CAR" +
" SET COLOR=@Color,MODEL=@Model,COST=@cost" +
" WHERE ID=@Id", car, new { cost = c };
Je voudrais faire cela sans avoir à faire correspondre chaque propriété dans l'objet de voiture à une variable dans la requête. Voici la classe exemple, mais j'ai beaucoup plus de propriétés dans ma classe réelle.
public class Car {
public int Id { get; set; }
public string Color { get; set; }
public string Model { get; set; }
}
Il pourrait y avoir une meilleure réponse mais cela a fonctionné pour l'instant:
int c = 1000;
conn.Execute(
"UPDATE CAR" +
" SET COLOR=@Color,MODEL=@Model,COST=" + c +
" WHERE ID=@Id", car;
Je crée généralement une nouvelle dynamique pour tous les paramètres. Par exemple:
var car = new Car();
car.Color = "Black";
car.Model = "BMW";
car.Id = 123;
var cost = 53000
DbConnection.Execute(@"update car set color=@color, model = @model, cost = @cost where id = @id",
new { color = car.Color, model = car.Model, cost = cost, id=car.Id});
De cette façon, vous pouvez assembler la dynamique à partir de plusieurs objets / variables.