0

嗨,我有一个使用 EF 自我跟踪对象的项目。我正在尝试向对象添加关系。(parentobject.relationshipObject.Add(新的 relationshipObject...))。但它会抛出一个错误:

在 CollectionChanged 或 PropertyChanged 事件期间无法更改 ObservableCollection。

此错误发生在模板创建的代码的#Region "Association Fixup" 中。最初mainobject没有带来任何关系。只有当用户选择项目时,才会更新项目中的关系。我发现如果我从集合中删除 MainObject 并将其与关系一起读取,则不会发生此错误。如果我只更新 mainObject 中的关系对象,当我从客户端添加新的关系对象时会出现此问题,非常感谢任何帮助

--代码顺序如下 1.获取所有父实体。2.当用户选择实体时,获取实体的关系并更新关系实体

parentCol.AsEnumerable.Where(Function(x) x.ID = e.Result.ID).FirstOrDefault().StopTracking() parentCol.AsEnumerable.Where(Function(x) x.ID = e.Result.ID).FirstOrDefault ().relationshipEntity = e.Result.relationshipEntity parentCol.AsEnumerable.Where(Function(x) x.ID = e.Result.ID).FirstOrDefault().StartTracking()

  1. 在关系实体中添加一个新项目

将 newRel 作为新的 relationshipEntity newRel.Ref_parent_Id = parentItem.ID newRel.REF_rel_ID = relItem.Id parentItem.relationshipEntity.Add(newRel) ---> 在这里抛出错误

relationshipEntity 表示父实体和另一个实体之间的关系表(多对多关系)。

谢谢

4

1 回答 1

0

您是否在设置孩子的父母时尝试添加新孩子?

由于 EF 试图修复双向关系上的单向链接,我认为这可能会导致这样的问题。

例如

parent.Add(new Child { Parent = parent, Name = "abc" });

与让 EF 做连接的另一端相反

parent.Add(new Child { Name = "abc" });

或者

new Child { Parent = parent, Name = "abc" });
于 2011-04-17T21:12:40.003 回答