ASP.Net EF不更新关系

时间:2010-12-14 23:01:39

标签: asp.net entity-framework-4 entity-relationship object-persistence

我有一个表,其中包含一组资源,这些资产被组织成多个层次结构,使得表与自身具有多对多关系(每个资产可以有多个子节点和多个父节点)。我正在使用以下代码重新分配子资产的父母。我意识到代码似乎是多余的;在我简单地使用子对象来改变关系之前,为了彻底,我决定尝试改变子对象和父对象之间的关系。

int NewParentID = Int32.Parse(e.CommandArgument.ToString());
Asset NewParent = DataContext.Assets.Where(asset => asset.AssetID == NewParentID).First();
Asset Child = DataContext.Assets.Where(asset => asset.AssetID == AssetID).First();
IEnumerable<Asset> OldParents = Child.ParentAssets.Where(asset => asset.AssetType == Child.OrganizationalParentAssetType);
foreach (Asset a in OldParents)
{
    a.ChildAssets.Remove(Child);
    Child.ParentAssets.Remove(a);
}
Child.ParentAssets.Add(NewParent);
NewParent.ChildAssets.Add(Child);
DataContext.SaveChanges();

有人能想到DataContext.SaveChanges()不会持久存在此代码中的关系更改的原因吗?更改简单属性值的工作正常(例如Child.AssetName =“Whatever”,持久保存到数据库,没有问题)。

非常感谢任何帮助!

此致

特雷弗

1 个答案:

答案 0 :(得分:0)

我的错误。我启用了LazyLoading。