2012-01-26 7 views
1

私は、RESOPONSESテーブルを持つCOMMENTSテーブルを持つBLOGテーブルを持っています。 例:.ToListの返されたレコードを削除します。

  • BLOG ONE

    1. コメント= 1つの
    2. 応答2
  • COMMENT-B
    • レスポンス1
      • 応答
      • 応答2
      • レスポンス3
    • BLOG TWO

      1. コメント-
        • レスポンス1
        • 応答2
        • レスポンス3
      2. COMMENT-B
        • レスポンス1
        • レスポンス2

    我々は 'BLOG TWO' を削除した場合、私はすべてのRESPONSE、およびすべてのコメントを削除する必要があり、ブログ投稿も同様です。

    解決策は、.ToList()から返されたすべてのレコードを削除することだと思います。これは私が考えている/試みたものです。私は 'IN'リストタイプのコマンドをやっているようです。

    ctx.BlogResponse.Where(b => b.blogCommentID = xxMyListItemxxx**).ForEach(ctx.BlogResponse.DeleteObject); 
    

    .ToList()内のレコードを削除するにはどうすればよいですか?

  • +1

    dbスキーマにカスケード参照整合性制約を追加することをお勧めします。従属データは自動的に削除されます。 sqlserverを使用する場合は、msdnを参照してください。http://msdn.microsoft.com/en-us/library/ms186973.aspx – Jan

    答えて

    0

    返されたリスト内のアイテムを削除した '.DeleteObject'が見つかりました。私はいくつかの呼び出しを行うことができ、それはかなりうまくいった。

    ctx。BlogComments.Where(c => c.blogID == id).ToList()。ForEach(ctx.BlodComments.DeleteObject);

    ctx.BlogResponse.Where(C => c.bCommIDの== CID).ToList()のForEach(ctx.BlogResponse.DeleteObject)。

    .ForEachはこれまで使用していなかったもので、この場合は機能します。

    0

    あなたはこのarticleヘッダー付きの部分を読んでください:カスケードは関係

    1

    Entity Frameworkの上でのルールを削除するには、このようなバルク操作で非常に良いではありません。あなたが求めていることを達成する方法がありますが、それは鈍いし、遅いです。

    最良の解決策は、コメントをブログにリンクする外部キー制約とレスポンスをコメントにリンクする外部キー制約に入れるだけです。そうすれば、EFでブログを削除するだけで、データベースはすべての関連データを非常に迅速に自動的に削除します。

    関連する問題