代码之家  ›  专栏  ›  技术社区  ›  leppie

处理具有唯一约束的表的插入/删除的Linq2SQL

  •  5
  • leppie  · 技术社区  · 17 年前

    我有一张桌子,看起来像是:

    TABLE Foo
    {
      Guid Id [PK],
      int A [FK],
      int B [FK],
      int C [FK],
    }
    

    以及对A,B和C的唯一约束。

    SubmitChanges() ,都很开心。

    现在编辑表。

    删除前面的条目,然后插入一行fresk PK,a=1,B=1,C=1。

    繁荣!唯一键约束SQL异常。

    据我所见,它试图先插入新记录,然后尝试删除前一条记录。我甚至可以理解,不可能确定这种情况发生的顺序。

    现在,“解决方案”是从数据库中删除唯一的约束(但我不这么做)。

    2 回复  |  直到 17 年前
        1
  •  3
  •   Marc Gravell    17 年前

    一种选择是创建一个事务(连接绑定事务,或者 TransactionScope SubmitChanges ,添加记录并 提交更改 ,然后最终提交事务(如果崩溃,则回滚)。

    交易范围 也应该有效,而且更容易做到——但效率不高。

    数据上下文。

        2
  •  1
  •   ross    16 年前

    我也有同样的问题。最后编写了一个包装类,其中包含我维护的“Added”和“Deleted”实体集合。以及“当前”收藏。UI已绑定到当前集合。

    只有当我去保存时,我才会插入submit/DeleteOnSubmit,并解析这两个集合来决定要执行什么操作的实体。

    推荐文章