我与两个表格有一对多的关系,Parent
有很多Child
。
我创建了一个父项并添加了子项。然后我要么创建它(如果它是新的父项)或更新它(如果它已经存在。)当我创建它时,一切正常。但是,如果我更新它,孩子们不会更新。
using (var Repo = new ParentRepository(context))
{
var key = new AnnualFormKey(prnt.Year, prnt.UserId);
if (Repo.Retrieve(key) == null)
{
prnt.CreatedDate = DateTime.Now;
prnt.CreatedId = 1;
Repo.Create(prnt);
Repo.SaveChanges(); //creates parent and children
}
else
{
prnt.UpdatedDate = DateTime.Now;
prnt.UpdatedId = 2;
Repo.Update(prnt);
Repo.SaveChanges(); //updates parent but not children
}
}
(注意:更新电话_context.Entry(orginal).CurrentValues.SetValues(entity)
这是我的上下文的问题还是我需要做其他事情?
答案 0 :(得分:1)
除非您专门分离Repo.Update(prnt)
中的对象,否则请忽略Repo.Retrieve
来电。它已经被跟踪了。
答案 1 :(得分:-1)
好的,我对此进行了更深入的研究,发现Entity Framework实际上并没有更新复杂的实体(因为它不会保存孩子)。有很多复杂的解决方法,但我的很简单。我刚刚删除了现有实体并再次创建它(使用更新版本)。