例如,我有一个与地址相关的联系人表。要与数据库通信,我使用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();
是否可以在此处的一次交易中插入所有孩子和父母?因为如果可能的话 - 我不必在父插入后创建所有要添加的子列表..
答案 0 :(得分:5)
以下是执行此操作的代码示例:
context.AddToContact(contact);
cacheAddressList.ForEach(a =>
{
address.Contact = contact;
context.SetLink(address, "Contact", contact);
});
context.SaveChanges(SaveChangesOptions.Batch);
希望这会有所帮助。 谢谢 PRATIK