たとえば、私は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が親の挿入後に追加する子どもたちのリストはその全て..
On context.SetLink(address、 "Contact"、contact); 「現在、コンテキストはエンティティを追跡していません」と表示されます。例外。 – 0x49D1
設定時に働いたcontext.AddRelatedObject(contact、 "navigation_property_with_address"、address); !どうもありがとうございました! – 0x49D1