2011-08-05 15 views
0

SQL Server 2008に接続されたEF 4.0/4.1を使用するプロジェクトの「高速統合」(別名「デスクトップ統合」)テストを実行したい。より軽量なSQL Server 2008の依存関係をスワップアウトします。 mstestやmbunitからSQL CE 4.0をスワップインしたいと思います。エンティティフレームワーク、SQL CE 4.0、およびDBテストオートメーション

SQL CE 4.0との互換性を持たせるために、EDMXファイルをどのように変換する必要があるかはすでに決めています。私の目的は、mstestまたはmbunitプロジェクトのビルド前のイベントから、CE用のEDMXを生成することです。しかし、私が知る必要があるのは、EDMXファイルの代わりに私のテストプロジェクト内から新しく生成されたEDMXファイルを使用するようEFに説得する方法です。私は接続文字列を変更するのと同じくらい簡単だとは思わない。

EDMXファイルがビルドされたアセンブリにリソースとして埋め込まれている可能性があります。そのため、この問題はDLLにコンパイルされる前にリソースをスワップする方法に関するものです。しかし、これについて間違っているとすれば、目標を達成する方法のガイダンスが欲しいだけです。

+0

SQL CEまたはSQLExpressローカルmdbに同じプロダクションスキーマがある場合、プロダクションエンティティを引き続き使用できず、接続文字列をSQLサーバーではなくmdbを指すようにスワップできないのはなぜですか?単純にする。 – nithins

+0

@nithins:SQL CEには、EDMXファイルの変換が必要な制限があります(たとえば、Unicodeのみで、 'varchar'などのタイプはありません)。 –

+0

SQLExpressは、フル装備でありながら軽量です。 – nithins

答えて

1

問題は、EDMXは設計時の機能にすぎないということです。新しいEDMXを持つことは何も意味しません。 EDMXは、コンパイル時に、.ssdl、.msl、.csdlという3つの別々のファイルに分割されます。これらのファイルは実際のマッピングを指定します(SQL ServerをSQL Server CEにスワップするには.ssdlのみを変更する必要があります)。したがって、最も簡単な方法は、モデルをgenerate files to build directoryに設定してリソースとして追加することです。その後、変更された.ssdlファイルと同じ.mslファイルと.csdlファイルをテストプロジェクトで使用するだけです(ファイルへのパスは接続文字列の一部です)。

とにかく私はその考えが嫌いです。異なるマッピング定義を持つ異なるデータベースに対して統合テストを行います。=別のアプリケーションをテストするようなにおいがします。統合テストは遅いと想定されているため、ターゲット環境に対して実行します。 SQL ServerとSQL Server CEが非常に近く、テストのための置き換えは機能するはずですが、依然として違いがあります。

+0

「高速統合」は、「低速統合」の話を置き換えるのではなく、補完することを意図しています。また、私は '.msl'ファイルを変更するつもりはありません。 SQL CEデータベースは、テストの初期化手順としてEFコンテキストから生成されます。したがって、本番DBとほぼ同じである必要があります。 –

関連する問題