通过WCF数据服务插入新的父/子

0x4*_*9D1 2 c# foreign-key-relationship entity-framework-4 wcf-data-services

例如,我有一个与地址相关的联系人表.要与数据库通信,我使用WCF数据服务.我有一个表单,其中有联系信息,上面有可能的地址列表.现在我创建'要插入的地址'列表并使用(上下文是实体数据上下文)插入联系人:

context.AddToContact(contact);
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

之后,我可以获取插入的contact.ID并将其作为父ID添加到地址列表中的所有地址:

cacheAddressList.ForEach(a =>
                        {
                            address.ContactID = contact.ID;
                            context.AddToAddress(address);
                        }
                        );
context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

所以我必须做2次插入.
我知道在实体框架中我可以将子项添加到父项,如果我有它们之间的导航属性.在我的情况下,我有导航,但这样的代码不起作用(联系还没有保存..):

 context.AddToContact(contact);
 cacheAddressList.ForEach(a =>
                            {
                                address.Contact = contact;
                            }
                            );
 context.SaveChanges();
Run Code Online (Sandbox Code Playgroud)

是否可以在一次交易中插入所有孩子和父母?因为如果可能的话 - 我不必在父插入后创建所有要添加的子列表.

小智 5

这是执行此操作的代码示例:

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

context.SaveChanges(SaveChangesOptions.Batch);
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.谢谢Pratik