我還沒有使用實體框架太多,所以請裸露在身邊。使用實體框架保存對子集合的更改
我已經修改了一個EntityCollection這是另一種EntityCollection, 的對象,當我嘗試保存這些更改,我得到以下錯誤:
The EntityCollection has already been initialized. The InitializeRelatedCollection method should only be called to initialize a new EntityCollection during deserialization of an object graph.
任何想法我可能會丟失?
以下是我使用的代碼。
public void UpdateCompanyManagement(Company newCompany)
{
Company oldCompany = entities.Companies.Where(c => c.COM_ID == newCompany.COM_ID).SingleOrDefault();
oldCompany.Managements = newCompany.Managements;
try
{
entities.SaveChanges();
}
catch (OptimisticConcurrencyException)
{
entities.Refresh(RefreshMode.ClientWins, newCompany.Managements);
entities.SaveChanges();
}
}
我能夠成功地保存父集合,使用下面的代碼:
public void UpdateCompanyDetails(Company newCompany)
{
Company oldCompany = entities.Companies.Where(c => c.COM_ID == newCompany.COM_ID).SingleOrDefault();
entities.ObjectStateManager.ChangeObjectState(oldCompany.city, System.Data.EntityState.Modified);
oldCompany = newCompany;
try
{
entities.SaveChanges();
}
catch (OptimisticConcurrencyException)
{
entities.Refresh(RefreshMode.ClientWins, oldCompany);
entities.SaveChanges();
}
}
任何幫助,爲什麼第一個代碼不工作,將不勝感激。 在此先感謝。
謝謝@dmitry。 – 2012-02-29 10:03:19
它回答你的問題嗎? – 2012-03-05 15:22:26
其實@dmitry資源非常豐富,但在這種情況下不一樣。我發佈了一個適用於我的解決方案。 – 2015-12-19 06:07:43