0

我有一张表,其中包含一堆资产,这些资产被组织到多个层次结构中,以便表与其本身具有多对多的关系(每个资产可以有多个子元素AND多个父母)。我正在使用以下代码重新分配子资产的父母。我意识到代码似乎是多余的;在我简单地使用子对象来改变关系之前,我想决定尝试改变子对象和父对象之间的关系。ASP.Net EF没有更新关系

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 =“无论”)是否保留到数据库中,没有问题)。

任何帮助非常感谢!

问候,

特雷弗

回答

0

我的错。我启用了LazyLoading。