我还没有使用实体框架太多,所以请裸露在身边。使用实体框架保存对子集合的更改
我已经修改了一个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