获取父母的ID非常容易,如此处的回答:How can I get Id of inserted entity in Entity framework?
using (var context = new MyContext())
{
context.MyEntities.AddObject(myNewObject);
context.SaveChanges();
int id = myNewObject.Id; // Yes it's here
}
但是,我问自己如何获得新创建的子实体(一对多)的ID,其中一个子对象已添加到子集合中,例如:
existingParent.Children.Add(newChild);
public int Save(Parent parent)
{
context.Update(parent);
context.SaveChanges();
return ???;
}
答案 0 :(得分:0)
用Save
方法返回新创建的孩子的ID是不合理的。
对于您当前的代码,Save
不是保存Children
属性的唯一目的。让我们假设以下情况:
Parenet
属性的情况下更新Children
,Save
的预期返回值是什么Parenet
更新Child
,您的期望返回值是什么Parenet
更新Child
,它将返回您可以考虑在致电Id
之后在public int Save(Parent parent)
之外获得新的context.SaveChanges();
。
演示代码:
var parent1 = _db.Parent.Include(p => p.Children).FirstOrDefault(p => p.Id == 1);
var child3 = new Child { Name = "N3"};
var child4 = new Child { Name = "N4" };
parent1.Children.Add(child3);
parent1.Children.Add(child4);
_db.Update(parent1);
_db.SaveChanges();
var childId3 = child3.Id;
var childId4 = child4.Id;