我與兩張桌子有一對多關係,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)
這是我的上下文中的問題,或者我需要做些別的事情
只需提及:不幸的是,在大多數情況下,您需要「複雜的變通辦法」,因爲您不能總是刪除舊的實體,因爲數據庫中可能有其他實體引用父或子外鍵約束或因爲您想保留一些列值不變,只更新其他一些列。你有幸在你的情況下:) – Slauma 2012-08-07 22:26:21