EF6一次更新3个表

时间:2015-05-15 14:38:09

标签: c# sql-server entity-framework

我有一个包含3个表的数据库

客户

CustomerID  (PK)

Name

订单

OrderID       (PK)

CustomerID    (FK)

OrderDate

表 的 OrderDetailLine

OrderDetailLineID

OrderID       (FK)

Price

ProductCode

我想在实体框架中添加1个客户,然后添加几个不同的订单,每个订单都有许多与插入的第一个客户相关的OrderDetailLine。我已经连接了SQL Server中的所有关系并将它们导入到EF模型中。一切都没有问题。我可以插入1个客户和许多订单,并且OrderDetailLine 第一次所有记录都插入到正确的数据库表中

我在一个文件中循环客户和订单,然后将客户和订单添加到数据库

但是当我想为同一个客户添加另一个订单时(我在CustomerID上遇到主键违规)。 EF在我的初始context.SaveChanges();

之后尝试重新插入同一个客户

那么,在使用相同的datacontext时,如何阻止EF尝试添加同一个客户?

我一直在圈子里走了好几个小时并得到同样的错误

  

{" INSERT语句与FOREIGN KEY约束冲突\" FK_Order_Customer \"。冲突发生在数据库\" xxxxx \",table \" dbo.Customer \",column' CustomerID'

客户是新订单以及订单和订单。但它第一次工作,我从EF获得了CustomerID。但是当我在inital context.savechanges()之后添加新订单和订单行时;我收到FK错误

1 个答案:

答案 0 :(得分:1)

感谢您抽出宝贵时间。

问题是我只是通过将实体添加到正确的模型来调用datacontext.savechanges()。例如,

Customer.Order.Add(customerInfo);

这是我缺乏理解。