こんにちは、EF セルフ トラッキング オブジェクトを使用するプロジェクトがあります。オブジェクトに関係を追加しようとしています。(parentobject.relationshipObject.Add(New relationshipObject...))。しかし、それはエラーをスローします:
CollectionChanged または PropertyChanged イベント中に ObservableCollection を変更することはできません。
このエラーは、テンプレートによって作成されたコードの #Region "Association Fixup" で発生します。最初、メインオブジェクトは何の関係ももたらしません。ユーザーがアイテムを選択した場合にのみ、アイテム内の関係が更新されます。コレクションから MainObject を削除し、リレーションシップを使用して readd すると、このエラーは発生しないことがわかりました。mainObject の関係オブジェクトのみを更新すると、クライアント側から新しい関係オブジェクトを追加すると、この問題が発生します。
--code シーケンスは次のとおりです。 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()
- relationshipEntity に新しい項目を追加する
Dim newRel As New relationshipEntity newRel.Ref_parent_Id = parentItem.ID newRel.REF_rel_ID = relItem.Id parentItem.relationshipEntity.Add(newRel) ---> ここでエラーをスローします
relationshipEntity は、親エンティティと別のエンティティ間の関係テーブル (多対多の関係) を示します。
ありがとう