更新クエリで2つのオブジェクトをマップする

dapper

質問

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

受け入れられた回答

より良い答えがあるかもしれませんが、これは今のところうまくいきました:

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

人気のある回答

私は通常、すべてのパラメータに対して新しいダイナミックを作成します。例えば:

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

この方法で、複数のオブジェクト/変数からダイナミックをアセンブルできます。



ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow
ライセンスを受けた: CC-BY-SA with attribution
所属していない Stack Overflow