我有一个包含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错误
答案 0 :(得分:1)
感谢您抽出宝贵时间。
问题是我只是通过将实体添加到正确的模型来调用datacontext.savechanges()。例如,
Customer.Order.Add(customerInfo);
这是我缺乏理解。