“在更改集中检测到循环”尝试将循环链接列表添加到数据库时

时间:2011-04-04 11:50:10

标签: c# linq linq-to-sql

我正在使用'in database'循环链接列表(cll)。我正在使用Linq到Sql插入形成这些cll的数据库条目。

他们有一般形式:

id uuid | nextId uuid | current bit

如果我尝试使用一些对象形成一个完整的cll来执行SubmitChanges,我会收到错误“在一组更改中检测到一个循环”。

我可以通过在单独的SubmitChanges中使链表'循环'来避免这种情况,但这有两个缺点:我失去了在一次交易中执行此操作的能力。在一小段时间内,我的数据库中的数据不正确。

有没有办法解决这种问题?

1 个答案:

答案 0 :(得分:2)

数据库需要强制执行其约束,我想你在nextIdId之间有一个外键约束。如果这种关系链回到起点(正如你所发现的那样),数据库将不会允许它。

我怀疑你的选择是:

  1. 删除外键约束。
  2. 作为链接列表存储在数据库中,并且只在代码中将尾部与尾部连接。
  3. 即使您的第二个选项也不起作用,因为数据库不允许您添加此最后一个引用。