没有FK插入错误顺序的父子

时间:2015-10-16 16:05:39

标签: c# sql-server entity-framework entity-framework-6

我有一个遗留的SQL Server数据库,由于许多原因,我无法进行重大更改。两个表之间存在父/子关系。这两个表之间没有外键。子表中还有一个FOR INSERT触发器,用于检查是否存在父记录。如果没有父记录,则插入因使用raiserror触发器而失败。

我试图将一些记录添加到父/子表中。我首先在父表中添加一条新记录。然后我在子表中添加多个记录。我通过记录语句验证了订单是否正确。调用DbContext.SaveChangesAsync方法时,会抛出DbUpdateException,并在raiserror中触发相同的错误消息。

问题是首先添加子记录,即使我在代码中首先添加父记录。 有没有办法在不更改数据库的情况下解决这个问题?我意识到目前的数据库设计并不理想,但它超出了我的控制范围。

我可以在插入父级后调用SaveChangesAsync,但是我放弃了在操作结束时只调用SaveChangesAsync一次的事务优势。是否有任何其他解决方案可以影响实体框架数据库插入的排序?

1 个答案:

答案 0 :(得分:1)

我认为不可能设置独立实体插入的顺序(即没有外键)。这是EF的内部机制。 EF在一次交易中多次调用SaveChanges没有问题。查看context.Database.BeginTransaction()或“老式”TransactionScope

Similar discussion on MSDN forums