Entity Framework CPT4を使用すると、カスタムコマンドまたはスクリプトを実行する方法がありますか?例えばEF CTP4でカスタムSQLを実行する方法
:
_dbSet.Provider.Execute("Truncate Table Users");
FWIW。私は単体テストのクラス設定でこれを使用し、きれいなデータでテーブルをセットアップします。
Entity Framework CPT4を使用すると、カスタムコマンドまたはスクリプトを実行する方法がありますか?例えばEF CTP4でカスタムSQLを実行する方法
:
_dbSet.Provider.Execute("Truncate Table Users");
FWIW。私は単体テストのクラス設定でこれを使用し、きれいなデータでテーブルをセットアップします。
ObjectContext.ExecuteStoreCommand
メソッドを試してください。
既存の接続を使用してデータソースに対して任意のコマンドを直接実行します。
ExecuteStoreCommandメソッドを呼び出すことは、DbCommandクラスのExecuteNonQueryメソッドを呼び出すことと同じです。
いくつかの他の良い情報:ExecuteStoreCommand
については、この例ではTip 41 – How to execute T-SQL directly against the database
:
// 10% inflation day!
ctx.ExecuteStoreCommand("UPDATE Products SET Price = Price * 1.1");
はたぶん設定にndbunitを見てみると、ユニットはテスト用のデータベースをティアダウン
編集:
これは、我々は我々のデータをテストユニット/統合のための我々のアプリケーションで使用しているものです実際にはEF4を使用して実装されています。それはかなり簡単で、反復可能なテストデータを注入してクリーンアップする良い方法を提供します。
しかし、EFを使用してアプリケーションロジック自体でテーブルを削除/切り捨てる必要もあります。だからあなたの元の質問に答えるために、私達はちょうど私たちはその後、私は考えることができる最速の回避策は保存されてprocsの使用である
_dataContext.ExecuteFunction("SchemaName.MyTableDeleteProc");
_dbContext.ObjectContext.ExecuteFunction( "何か"); – detroitpro
を使用してEFから呼び出すストアドプロシージャに「削除するには、テーブルから」スクリプトを組み込みました。別の方法として、http://www.aneyfamily.com/terryandann/post/2008/04/Batch-Updates-and-Deletes-with-LINQ-to-SQL.aspx <と記載されているバッチ削除を使用しますが、コードはEFではなくLinq2Sqlに基づいているため、移植する必要があります。
ここで重要な点は、CTP4ではDBContextが導入されていることです。しかしながら;必要なコマンドの多くはObjectContextにあります。 – detroitpro
2011/12/16現在、ctx.Database.ExecuteStoreCommand(...)は正しいコマンドのようです。 –