2009-11-23 34 views
11

新しいEntity Frameworkには、複数のアイテムを削除するメソッドが含まれていますが(LinqからSQLにDeleteAllOnSubmit()がありますが、そのための関数/メソッドが見つかりません。Entity Framework 4複数のオブジェクトの削除(RemoveAll)

これはBeta 2でですか?それとも自分で作る必要がありますか?

UPDATE:

これは私が今使っているものです:

using (var context = new EntityFrameworkExampleEntities()) 
    {  
    var count = 
     context.ExecuteStoreCommand(@"DELETE FROM Companies WHERE [CompanyID]=4");    
    } 

次のブログを参照してください:

public void DeleteObjects(IEnumerable<object> objects) 
    { 
     foreach (object o in objects) 
     { 
      DeleteObject(o); 
     } 
     SaveChanges(); 
    } 
+1

[LINQ to Entitiesの一括削除]の可能な複製(http://stackoverflow.com/questions/869209/bulk-deleting-in-linq-to-entities) –

答えて

8

EF 4は、あなたがオブジェクトコンテキストに対してTSQLステートメントを実行することができます詳細については。

http://blogs.microsoft.co.il/blogs/gilf/archive/2009/11/25/execute-t-sql-statements-in-entity-framework-4.aspx

+0

私の機能に欠点はありますか? – Omar

+2

欠点は、削除中にすべてのオブジェクトがメモリに保持されることです。データベースからまだロードしていない大きなバッチのオブジェクトを削除したい場合は、それらを削除する前にすべてをアプリケーションにロードします。 –

+1

Ick。 「この能力 は、Entity Frameworkが必要とするものを に対応していない場合にのみ使用する必要があります。 EFは複数のオブジェクトの削除、DeleteObject()、SaveChanges()の呼び出しをサポートしています(またはこれをhttp://stackoverflow.com/a/870081/24267で実行してください)。 – mhenry1384

0

それが掲載されていなかった、私はこれが遅れているけど、私はこのポストを発見し、簡単な解決策を見つけました。 関連付けプロパティでOnDeleteをCascadeに設定できます。 VS2012でedmxファイルを開きます。アソシエーションをクリックすると、[プロパティ]タブにOnDeleteが表示されます。次に、トリガーやその他の特別な処理をしないでRemove()メソッドを使用できます。

関連する問題