【发布时间】:2013-01-27 19:15:14
【问题描述】:
我有A表和B表:
TableA(IDTableA,...) TableB(IDTableB, IDTableA,...)
我知道如果我在数据库上设置它,我可以在 cascada 上删除,但是如果我没有在数据库中定义它并且我想用 EF 删除子级,这是最好的方法吗?
想象一下这种情况:用户 A 将父级添加到上下文中,用户 A 将子级添加到上下文中,将父级和子级标记为已删除并保存更改。但是如果用户 B 在用户 A 加载孩子并确认更改之间添加了一个新孩子,则用户 B 添加的新孩子不会被删除,或者由于引用完整性而出现异常。
我尝试使用事务,将父级设置为已删除,然后,在下一步中,当我创建savechanges 时,父级寄存器被锁定,因此无法被其他用户加载。但问题是一样的,其他用户可以在父级加载和保存更改之间进行父级更改。
所以我的问题是,如果我想用 EF 删除父级及其所有子级,最好的方法是什么?最好的方法是尝试N次删除父项?当我有好的表现时,这是一个不错的选择吗?
谢谢。 戴姆洛克。
【问题讨论】:
标签: c# entity-framework concurrency