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

时间:2011-03-02 13:46:09

标签: c# entity-framework-4 foreign-key-relationship 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中我可以将子节点添加到父节点,如果我有它们之间的导航属性。在我的情况下,我有导航,但这样的代码不起作用(联系还没有保存..):

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

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

1 个答案:

答案 0 :(得分:5)

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

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

context.SaveChanges(SaveChangesOptions.Batch);

希望这会有所帮助。 谢谢 PRATIK