EF 4.0 добавление отношений - PullRequest
0 голосов
/ 17 апреля 2011

HI У меня есть проект с использованием объектов самоконтроля EF. Я пытаюсь добавить отношение к объекту.(parentobject.relationshipObject.Add (Новое отношениеObject ...)).Но выдает ошибку:

Невозможно изменить ObservableCollection во время события CollectionChanged или PropertyChanged.

Эта ошибка возникает в #Region «Исправление ассоциации» кода, созданногошаблон.Изначально основной объект не приносит никаких отношений.Только когда элемент выбран пользователем, отношения обновляются в элементе.я обнаружил, что если я удаляю 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 (). RelationsEntity = e.Result.relationshipEntity parentCol.AsEnumerable.Where (Функция (x) x.ID = e.Result.ID) .FirstOrDefault (). StartTracking ()

  1. для добавления нового элемента в RelationsEntity

Dim newRel As New отношенияхnewRel.REF_rel_ID = relItem.Id parentItem.relationshipEntity.Add (newRel) ---> Выдает здесь ошибку

relationsEntity обозначает таблицу отношений между родительским объектом и другим объектом (отношение многие ко многим).

спасибо

1 Ответ

0 голосов
/ 18 апреля 2011

Вы пытаетесь добавить нового дочернего элемента при настройке родительского дочернего элемента?

Поскольку EF пытается исправить односторонние ссылки на двусторонних отношениях, я предполагаю, что это может вызвать такую ​​проблему.

Например

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

Вместо того, чтобы позволить EF выполнять другую сторону соединения

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

или

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