例如,我有一个与地址相关的联系人表。为了与数据库通信,我使用 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();
是否可以将所有 child 和 parent 插入到此处的一笔交易中?因为如果可能的话,我不必创建所有要在父插入后添加的子列表。
最佳答案
以下是执行此操作的代码示例:
context.AddToContact(contact);
cacheAddressList.ForEach(a =>
{
address.Contact = contact;
context.SetLink(address, "Contact", contact);
});
context.SaveChanges(SaveChangesOptions.Batch);
希望这有帮助。 谢谢 普拉蒂克
关于c# - 通过 WCF 数据服务插入新的父/子,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5168315/