2010-12-07 10 views
2

を作成し、私はEntity Frameworkのに4.は、ナビゲーションプロパティコレクションにオブジェクトを追加する新しいエンティティ

を使用しています私は、既存のエンティティに新しいエンティティを関連付けしようとしています。実際には、子オブジェクトへの参照を親に追加するだけで、システムは新しい子エンティティの作成を終了します。

2つのエンティティ間には多くの関係がありますので、単に親エンティティのFKプロパティを設定することはできません。私は単純にデータベースに新しい子オブジェクトを作成するparent.ChildCollection.Add(子)を試してみました。これは私が避けようとしていることです。

私は明らかに間違ったことをする必要があります。

おかげ

私は今、私は、サーバーからすべての子を取得するには、このような何かを持っているクライアント側 をしなければならない私のセルフトラッキングエンティティのための更新されたコードサンプル

コードサンプル、ループ私が欲しいものを見つけることによって、その後、PAに追加する正しいものを見つけるために、そのコレクションを私がループしてい

  List<Service.Child> childs = _client.GetChildren(); 

オブジェクトのコレクションに追加rent.childsコレクションie。

  List<Service.Child> childList = new List<Service.Child>(); 
      foreach (Service.Child child in childList) { 
       if (child.ChildId == childId) 
        childList.Add(child); 
      } 
      contact.Childs = childList; 

答えて

1

エンティティは元々データベースから来た、独自のEntityKeyプロパティが取り込まれている場合、は別のエンティティにリンクするを追加使用して追加にそのEntityStateを変更します。既存のエンティティでも、SaveChangesはこのエンティティの挿入コマンドを作成します。代わりにAttachを使用して検討する必要があります。

parent.ChildCollection.Attach(child); 

、すでに が自動的に接続されていないのObjectContextに存在するが、エンティティ間の関係を定義することができる取り付け方法を使用します。

私は(それはあなたのコメントをもたらすことができるかわからない)、自己追跡エンティティを使用しています
+0

...しかし、はい、私は現在しようとしています両方parent.ChildCollection.Attach(子供)と同様にchild.ParentCollection.Attach(親)どちらの場合も、EFは引き続き新しい子オブジェクト/行をデータベースに追加しています。これは本当に私を困らせてしまった。 – David

+0

コードを投稿してもらえますか?あなたはSTEを使用している場合、それはタイプの 'TrackableCollection 'だからでもChildCollection上に存在しないアタッチので、私はあなたが正確にそこに何をしているかわかりません。 –

+0

上記のコードサンプルをご覧ください – David

関連する問題