2

たとえば、私はAddressesに関連するContactテーブルを持っています。データベースと通信するには、WCF Data Servicesを使用します。私はフォームを持っています。連絡先には可能なアドレスのリストがあります。
WCFデータサービス経由で新しい親/子を挿入します。

context.AddToContact(contact); 
context.SaveChanges(); 

その後、私は挿入contact.IDを得ることができますし、親IDとしてそれを追加します。今の私は、「アドレス挿入する」と使用して連絡先を挿入します(コンテキストがここエンティティデータコンテキストである)のリストを作成しますアドレス帳のすべてのアドレス:

cacheAddressList.ForEach(a => 
         { 
          address.ContactID = contact.ID; 
          context.AddToAddress(address); 
         } 
         ); 
context.SaveChanges(); 

だから私は2つの挿入を行う必要があります。
私はEntity Frameworkの中で、それらの間にナビゲーションプロパティがある場合、私は親に子を追加できることを知っています。私の場合は、ナビゲーションを持っているが、そのようなコードのdoesntの仕事(接触hasntは...保存まだされて):

context.AddToContact(contact); 
cacheAddressList.ForEach(a => 
          { 
           address.Contact = contact; 
          } 
          ); 
context.SaveChanges(); 

それはここ1つのトランザクション内のすべての子どもと親を挿入することは可能ですか?このことができます

context.AddToContact(contact); 
cacheAddressList.ForEach(a => 
    { 
     address.Contact = contact; 
     context.SetLink(address, "Contact", contact); 
    }); 

context.SaveChanges(SaveChangesOptions.Batch); 

希望:それがあれば可能-iが親の挿入後に追加する子どもたちのリストはその全て..

答えて

5

を作成する必要はありませんのでここではこれを行うためのコードサンプルです。 ありがとう Pratik

+0

On context.SetLink(address、 "Contact"、contact); 「現在、コンテキストはエンティティを追跡していません」と表示されます。例外。 – 0x49D1

+1

設定時に働いたcontext.AddRelatedObject(contact、 "navigation_property_with_address"、address); !どうもありがとうございました! – 0x49D1

関連する問題