我有一个表,它对两个字段(IDParent,positionInParent)有一个唯一的约束。
Parent
{
IDParent;
}
Child
{
IDChild;
IDParent;
PositionInParent;
}我只能让一个孩子在一个位置上,我希望当我删除一个孩子时,位置+1的孩子被更改为位置-1,这样就没有空隙了。
问题是,当我在dataContext中保存更改时,因为EF没有确保操作的顺序,所以由于唯一的约束,我得到了一个异常,似乎在更新被删除的子程序之前已经完成了对受影响子节点的更新。
所以我这样做,这是可行的,但我想知道是否有更好的方法来解决这个问题:
将受影响儿童的状态更改为unchanged.
但是,这使我需要进行额外的保存更改,还可以使用两个循环来更改受影响的子节点的状态。
这是一种独特的方式,还是有更好的方法来做到这一点?
我正在使用EF核心3.0。
发布于 2020-01-21 14:02:07
我认为这可以通过使用“删除后触发器”在DB级别上实现。
从代码的角度看,您可能可以删除和保存,然后更新和保存。为了防止副作用,在事务中执行所有这些操作。
https://stackoverflow.com/questions/59839719
复制相似问题