我目前正在开发一个应用程序,其中在调用 DataContext.SubmitChanges() 时遇到异常“在一组更改中检测到循环”。我知道为什么会引发此异常,但我无法找到适合我情况的解决方法。让我解释一下情况。我有一个带有如下所示表的数据库,我使用 LINQ to SQL 访问该表,因此它被映射到 vb.net 中的类。
Device
-------
ID
DefaultGatewayID
DefaultGatewayID 是一个设备,甚至可以是同一个对象或另一个设备。用户使用带有 DataGrid 的 GUI 来更改和添加新记录。更新记录没问题。ID 已经存在,并且 DefaultGatewayObject 已附加到记录(ID 存储在数据库中)。
但是,当我尝试添加新记录并在同一事务中设置 DefaultGatewayObject 时,我得到“在一组更改中检测到循环”异常。我怀疑这是由 LINQ to SQL 引起的,因为它不知道首先添加哪条记录,尽管在这种情况下它是相同的项目。
我没有将插入分成两部分的选项,一个用于设备,然后添加 DefaultGateway,因为我的提交按钮绑定到执行 SubmitChanges 的 XAML 命令。
理想情况下,我会有一些选项来指定首先创建哪个对象,或者类似的东西。我认为这是删除与自身的连接并仅在此字段中设置 ID 的选项,但我宁愿在 LINQ to SQL 中找到修复程序。
我希望SO对此有答案。我只能找到这个相关的帖子“添加循环链表时检测到循环”