EF 4.0添加关系

时间:2011-04-17 04:49:00

标签: entity-framework-4 self-tracking-entities

HI 我有一个使用EF自我跟踪对象的项目。我正在尝试向对象添加关系。 (parentobject.relationshipObject.Add(New relationshipObject ...))。 但它引发了一个错误:

  

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

此错误发生在模板创建的代码的#Region“Association Fixup”中。 最初主要对象没有带来任何关系。只有当用户选择了项目时,才会在项目中更新关系。 我发现,如果我从集合中删除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. 在relationEntity
  2. 中添加新项目

    Dim newRel As New relationshipEntity         newRel.Ref_parent_Id = parentItem.ID         newRel.REF_rel_ID = relItem.Id         parentItem.relationshipEntity.Add(newRel)--->这里引发错误

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

    感谢

1 个答案:

答案 0 :(得分:0)

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

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

E.g。

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

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

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

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