4

我有下表设置:

  • 订单(ID)
  • 产品(ID) [其中 ProductID 1 和 2 已经存在]
  • OrderProduct (OrderId, ProductID) [两个键 FK'ng 到 Order 和 Product 表]

我正在尝试向Order表中添加一条记录,将 2 个产品分配到订单中,如下所示:

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

db.SaveChanges();

问题是:保存订单时,两个产品被插入到数据库中,而不是引用已经存在的产品记录。

请帮忙。谢谢。

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 回答