EF6一次更新3个表

本文关键字:一次 更新 3个表 EF6 | 更新日期: 2023-09-27 17:49:20

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

表客户

CustomerID  (PK)
Name

OrderID       (PK)
CustomerID    (FK)
OrderDate

OrderDetailLine

OrderDetailLineID
OrderID       (FK)
Price
ProductCode

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

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

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

那么,当使用相同的数据上下文时,我如何阻止EF尝试添加相同的客户?

我已经转了几个小时,得到相同的错误

{" INSERT语句与外键约束冲突'"FK_Order_Customer'"。冲突发生在数据库"xxxxx",表"dbo"中。客户'",列'CustomerID'

客户是与订单和订单行一起新创建的。但它第一次工作,我得到CustomerID从EF返回。但是当我在初始context. savchanges()之后添加新的order和orderlines时;我得到FK错误

EF6一次更新3个表

感谢您的宝贵时间。

问题是我只是调用DataContext.SaveChanges(),将实体添加到正确的模型中。例如:

Customer.Order.Add(customerInfo);

是我不够了解。