实体框架:更新连接表

本文关键字:连接 更新 框架 实体 | 更新日期: 2023-09-27 17:54:38

我有以下表设置:

  • (ID)
  • Product (ID)[其中ProductID 1和2已经存在]
  • OrderProduct (OrderId, ProductID)[两个键连接到Order和Product表]

,我正试图添加一个记录到订单表分配2个产品在订单如下:

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

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

请帮助。谢谢。

实体框架:更新连接表

您应该使用db而不是创建新的Product,如下例所示:

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