0

テーブルに複数の階層に編成された一連のアセットが含まれているため、テーブルに多対多の関係があります複数の親)。私は子資産の親を再割り当てするために次のコードを使用しています。コードが重複しているように見えます。私は単純に子オブジェクトを使って関係を変更する前に、徹底的にするために、子オブジェクトと親オブジェクトの両方から関係を変更しようと決めました。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 = "Whatever"はデータベースに保存されていますが、問題はありません)。

ご協力いただきありがとうございます。

よろしく、

トレバー

答えて

0

私のミス。私はLazyLoadingを有効にしました。

関連する問題