没有插入错误顺序的FK的亲子关系
本文关键字:FK 关系 顺序 插入 错误 | 更新日期: 2023-09-27 18:18:05
我有一个遗留的SQL Server数据库,由于许多原因,我无法进行重大更改。两个表之间存在父/子关系。这两个表之间没有外键。子表中还有一个FOR INSERT
触发器,用于检查父记录是否存在。如果没有父记录,则由于使用raiserror
触发,插入失败。
我正在尝试添加一些记录到父/子表。我首先向父表添加一条新记录。然后将多条记录添加到子表中。我已经通过日志报表确认订单是正确的。当DbContext.SaveChangesAsync
方法被调用时,DbUpdateException
被抛出,并带有与raiserror
相同的错误消息。
问题是首先添加子记录,即使我首先在代码中添加父记录。有没有办法在不改变数据库的情况下解决这个问题?我意识到当前的数据库设计在这里是不理想的,但它超出了我的控制范围。
我可以在插入父节点后调用SaveChangesAsync
,但这样我就放弃了在操作结束时只调用一次SaveChangesAsync
的事务好处。是否有其他解决方案来影响实体框架数据库插入的顺序?
我认为没有可能设置独立的实体插入的顺序(即没有外键)。这是EF的内部机制。在EF中,在一个事务期间多次调用SaveChanges
没有问题。看看context.Database.BeginTransaction()
或"老式"TransactionScope
。