У меня есть таблица, которая содержит кучу активов, которые организованы в несколько иерархии, так что таблица имеет отношение «многие ко многим» с самим собой (каждый актив может иметь несколько дочерних элементов И несколько родителей). Я использую следующий код, чтобы переназначить родителей дочерних активов. Я понимаю, что код кажется излишним; прежде чем я просто использовал дочерний объект, чтобы внести изменения в отношения, но чтобы быть тщательным, я решил попробовать изменить отношения как с дочерним, так и с родительским объектом.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 = «Независимо», сохраняется в базе данных, никаких проблем).
Любая помощь очень ценится!
С уважением,
Trevor