0

我与两个表有一对多的关系,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)

这是我的上下文问题还是我需要做其他事情?

4

2 回答 2

1

除非您Repo.Update(prnt)专门在Repo.Retrieve. 它已经被跟踪了。

于 2012-08-07T20:36:08.460 回答
-1

好的,我更深入地查看了这一点,发现实体框架实际上并没有更新复杂的实体(例如,它不会保存子实体)。有很多复杂的解决方法,但我的很简单。我刚刚删除了现有实体并再次创建了它(使用更新的版本)。

于 2012-08-07T21:05:20.077 回答