0

こんにちは、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()

  1. relationshipEntity に新しい項目を追加する

Dim newRel As New 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 に答える