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