0

Dapper 能够将此查询映射到car对象。它知道汽车中的哪个属性去查询中的哪个变量。

Car car = new Car();
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model" +
      " WHERE ID=@Id", car;

但是我可以在查询中添加另一个变量吗?例如:

int c = 1000; 
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model,COST=@cost" +
      " WHERE ID=@Id", car, new { cost = c };

我想这样做,而不必将汽车对象中的每个属性都与查询中的变量相匹配。这是示例类,但我的真实类中有更多属性。

public class Car {
    public int Id { get; set; }
    public string Color { get; set; }
    public string Model { get; set; }
}
4

2 回答 2

1

我通常只是为所有参数创建一个新的动态。例如:

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});

通过这种方式,您可以从多个对象/变量中组合动态。

于 2013-04-26T16:59:47.703 回答
0

可能有更好的答案,但这目前有效:

int c = 1000; 
conn.Execute(
      "UPDATE CAR" +
      " SET COLOR=@Color,MODEL=@Model,COST=" + c +
      " WHERE ID=@Id", car;
于 2013-04-26T14:35:53.290 回答