2016-12-08 6 views
1

私の機能の1つにParent-Children構造があります。私はEF6を使用しています。Entity Frameworkを使用して単一のメソッドで削除、追加、および更新を行う方法

子レコードを追加/更新することはできましたが、UIから削除された子レコードの一部を削除します。以下は、あなたがリストから子供を削除しようとしているが、あなたはentity.Childrenからそれらを削除するか、dbContext.Childrenからそれらを削除するか必要

using (dbBlinkContext dbContext = new dbBlinkContext()) 
{ 
    // Add/Update Parent 
    if (entity.parentID <= 0) 
     dbContext.Entry(entity).State = System.Data.Entity.EntityState.Added; 
    else 
     dbContext.Entry(entity).State = System.Data.Entity.EntityState.Modified; 

    // Here I want to remove Children that got deleted from UI 
    var dbChildren = dbContext.Children.Where(x => x.ParentID == entity.ParentID).ToList();  
    // this code is not working 
    dbChildren.RemoveAll(c => !entity.Children.Contains(c)) // breaks here saying dbChildren not part of entity... 

    // Add/Update Children 
    if (entity.Children.IsNotNull() && entity.Children.Count > 0) 
    { 
     foreach (ChildType child in entity.Children) 
     { 
      if (Child.ChildID <= 0) 
       dbContext.Entry(Children).State = System.Data.Entity.EntityState.Added; 
      else 
       dbContext.Entry(Children).State = System.Data.Entity.EntityState.Modified; 
     } 
    } 

    dbContext.SaveChanges(); 
} 

答えて

0

..私はこれまで試したものです。 "(!C => entity.Children.Contains(C))dbChildren.RemoveAll" entity.Childrenの代わりに、nullでなく、あなたが維持したい人の子供が含まれていると仮定すると

は、試してみてください。

dbContext.Children.RemoveRange(dbChildren.Except(entity.Children)); 
関連する問題