4

次のテーブル設定があります。

  • 注文(ID)
  • Product (ID) [ProductID 1 と 2 が既に存在する場合]
  • OrderProduct (OrderId, ProductID) [Order テーブルと Product テーブルへの 2 つのキー FK'ng]

そして、次のように 2 つの製品を注文に割り当てるレコードをOrderテーブルに追加しようとしています。

var order = new Order();
order.Products.Add(new Product {ID=1});
order.Products.Add(new Product {ID=2});

db.SaveChanges();

問題は、注文を保存するときに、既存の製品レコードを参照する代わりに、2 つの製品が DB に挿入されることです。

助けてください。ありがとう。

4

1 に答える 1

7

次の例のように、新しい製品を作成する代わりに db を使用する必要があります。

var order = new Order();
order.Products.Add(db.Products.First(p => p.ID = 1));
order.Products.Add(db.Products.First(p => p.ID = 2));

db.SaveChanges();

または、商品作成後に「参照を更新」する必要があります。次のようなことができます:

var product = new Product() { ID = 1 };
db.Attach(product);
order.Products.Add(product);
于 2013-01-19T11:31:55.027 に答える