2010-12-02 8 views
2

Entity Framework CPT4を使用すると、カスタムコマンドまたはスクリプトを実行する方法がありますか?例えばEF CTP4でカスタムSQLを実行する方法

_dbSet.Provider.Execute("Truncate Table Users"); 

FWIW。私は単体テストのクラス設定でこれを使用し、きれいなデータでテーブルをセットアップします。

答えて

1

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"); 
+0

ここで重要な点は、CTP4ではDBContextが導入されていることです。しかしながら;必要なコマンドの多くはObjectContextにあります。 – detroitpro

+0

2011/12/16現在、ctx.Database.ExecuteStoreCommand(...)は正しいコマンドのようです。 –

0

はたぶん設定にndbunitを見てみると、ユニットはテスト用のデータベースをティアダウン


編集:

これは、我々は我々のデータをテストユニット/統合のための我々のアプリケーションで使用しているものです実際にはEF4を使用して実装されています。それはかなり簡単で、反復可能なテストデータを注入してクリーンアップする良い方法を提供します。

しかし、EFを使用してアプリケーションロジック自体でテーブルを削除/切り捨てる必要もあります。だからあなたの元の質問に答えるために、私達はちょうど私たちはその後、私は考えることができる最速の回避策は保存されてprocsの使用である

_dataContext.ExecuteFunction("SchemaName.MyTableDeleteProc"); 
+0

_dbContext.ObjectContext.ExecuteFunction( "何か"); – detroitpro

関連する問題