2017-06-23 7 views
0

すべての子供がいるrootを削除できません... このコードは間違っていますが、解決策を見つけることができません。 Database子どもと一緒にrootを削除する方法 - Entity Framework

id - 私が削除したいと思う著しいルートです。

public void RemoveLeaf(int id) 
{ 
    using (var context = new TreeDBtestEntities()) 
    { 
     using(var dbContextTransaction = context.Database.BeginTransaction()) 
     { 
      try 
      { 
       var root = context.DynamicTrees.Where(x => x.Id == id).FirstOrDefault(); 
       int? idLeaf = root.Id; 
       while (idLeaf != null) 
       { 
        context.DynamicTrees.RemoveRange(context.DynamicTrees.Where(x => x.Id == id)); 

        var result = context.DynamicTrees.Where(x => x.ParentId == idLeaf).FirstOrDefault(); 
        if (result != null) 
         RemoveLeaf(result.Id); 
        idLeaf = null; 

        context.SaveChanges(); 
       } 
       dbContextTransaction.Commit(); 
      } 
      catch 
      { 
       dbContextTransaction.Rollback(); 
      } 
     } 
    } 
} 

すべての子供を含む親を削除します。このコードは、親と一部の子のみを削除します。

私を助けることができますか?

+0

でこれを扱うことができると考えていますか?期待されるものは何ですか?実際の行動は何ですか? – Sentry

+0

すべての子を持つ親を削除します。このコードは、親と一部の子のみを削除します。 – Duzy

答えて

0

私はあなたが再帰を削除し、コードが間違っている何ちょうどRemoveRange

context.DynamicTrees.RemoveRange(context.DynamicTrees.Where(x => x.Id == id || x.ParentId == id)); 
context.SaveChanges(); 
+0

それは動作しません – Duzy

関連する問題