0

J'ai une table qui contient un tas d'actifs organisés en plusieurs hiérarchies de sorte que la table a une relation plusieurs-à-plusieurs avec elle-même (chaque actif peut avoir plusieurs enfants ET plusieurs parents). J'utilise le code suivant pour réaffecter les parents d'un élément enfant. Je réalise que le code semble redondant; avant que j'utilise simplement l'objet enfant pour faire le changement de relation, mais pour être complet, j'ai décidé d'essayer de changer la relation à la fois de l'enfant et de l'objet parent.ASP.Net EF ne pas mettre à jour les relations

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(); 

Quelqu'un peut-il penser à une raison pour laquelle DataContext.SaveChanges() ne persisterait pas la relation modifications apportées dans ce code? La modification de valeurs de propriété simples fonctionne très bien (par exemple, Child.AssetName = "Whatever", est conservé dans la base de données, pas de problème).

Toute aide est très appréciée!

Cordialement,

Trevor

Répondre

0

Mon erreur. J'ai activé LazyLoading.

Questions connexes