首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何避免标记为不变,以后又因唯一的约束而修改?

如何避免标记为不变,以后又因唯一的约束而修改?
EN

Stack Overflow用户
提问于 2020-01-21 11:03:00
回答 1查看 45关注 0票数 0

我有一个表,它对两个字段(IDParent,positionInParent)有一个唯一的约束。

代码语言:javascript
运行
复制
Parent
{
    IDParent;
}

Child
{
    IDChild;
    IDParent;
    PositionInParent;
}

我只能让一个孩子在一个位置上,我希望当我删除一个孩子时,位置+1的孩子被更改为位置-1,这样就没有空隙了。

问题是,当我在dataContext中保存更改时,因为EF没有确保操作的顺序,所以由于唯一的约束,我得到了一个异常,似乎在更新被删除的子程序之前已经完成了对受影响子节点的更新。

所以我这样做,这是可行的,但我想知道是否有更好的方法来解决这个问题:

将受影响儿童的状态更改为unchanged.

  • Save,因此已删除的子对象被标记为deleted.

  • Change --状态标记为受影响的子节点。

  • 保存再次更改。

但是,这使我需要进行额外的保存更改,还可以使用两个循环来更改受影响的子节点的状态。

这是一种独特的方式,还是有更好的方法来做到这一点?

我正在使用EF核心3.0。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-21 14:02:07

我认为这可以通过使用“删除后触发器”在DB级别上实现。

从代码的角度看,您可能可以删除和保存,然后更新和保存。为了防止副作用,在事务中执行所有这些操作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59839719

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档