实体框架:更新连接表

dan*_*dan 3 c# orm ado.net entity-framework

我有以下表格设置:

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

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

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

db.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

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

请帮忙.谢谢.

Rob*_*ito 6

您应该使用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();
Run Code Online (Sandbox Code Playgroud)

或者,您需要在创建产品后"更新参考".你可以这样做:

var product = new Product() { ID = 1 };
db.Attach(product);
order.Products.Add(product);
Run Code Online (Sandbox Code Playgroud)