はい。ポイントは、それほど頻繁に実行する必要のない統合テストにのみ実際のデータベースを使用することです。通常、統合テストのセット全体はビルド サーバーでのみ実行されます。
これは 単体テスト時の EF の初期化が遅い (x86 への切り替えを試みることができます)。ビューの生成にも時間がかかります。 ビューは事前に生成できます これは通常、実際のシステムの起動と初期化を減らすために行われますが、ビューの事前生成を使用して単体テストを高速化する場合は、テストからビルドに時間を移動するだけなので、あまり役に立ちません.
歩き回るということは、単純な古い SQL スクリプトを使用することを意味します。この操作に必要な追加の時間は、その SQL の生成に費やされる場合があります。通常のアプリケーションの実行では通常2回以上必要ないため、SQLはキャッシュされていないと思いますが、EFにそのSQLの最も重要な部分を提供し、どこかにキャッシュして、必要なたびに自分で実行するように依頼できます. EF は、テーブルと制約の SQL を提供できます:
var dbSql = ((IObjectContextAdapter) context).ObjectContext.CreateDatabaseScript();
データベースを作成して一緒に使用するには、独自の小さな SQL が必要です。次のスクリプトのようなものでも十分です:
CREATE DATABASE YourDatabaseName
USE YourDatabaseName
また、これを機能させ、プロセスを制御するには、最初にコードでデータベース生成をオフにする必要があります。
Database.SetInitializer<YourContextType>(null);
データベース作成 SQL を実行する場合、Master
を指す別の接続文字列が必要になります。 データベース。