0

私のプロジェクトでは、EF を使用し、プレゼンテーション レイヤーからクエリを抽象化する必要があります。私がネット全体で質問と回答を読んできたことに基づいて、EF は DbSet にリポジトリ パターンを持ち、DbContext に作業単位を持って構築されています。

リポジトリ パターンは要件を簡単に満たすことができますが、この実装を繰り返したくないので、どこで DbContext を初期化またはアクセスする必要があるか混乱しています。それはサービス層にあるべきですか?

このプロジェクトでは MVC4 API を使用します

4

1 に答える 1

0

過去にこれが行われたのを見た 1 つの方法は、コンテキストのインターフェイスを作成して DbContext の物理データベースへの依存を本質的に取り除き、サービス レイヤー (ビジネス ロジック レイヤー) からデータ アクセス呼び出しを行うことです。

ただし、このアプローチの使用には欠点があります。これは、単体テスト (DbContext の Fake 実装を使用する) が LINQ to Objects を使用してクエリを実行するのに対し、具体的な実装では LINQ to Entities を使用するという事実です。すべての LINQ to Objects メソッドをサポートしているわけではありません。

これらの違いを強調する MSDN (http://msdn.microsoft.com/en-us/library/bb738550.aspx) のドキュメントがあります。

また、この記事 (http://kearon.blogspot.com.au/2011/02/mocking-entity-framework-4-code-first.html) を読むことをお勧めします。この記事では、内部の依存関係を削除して DbContext ユニットをテスト可能にする方法を示しています。物理データベース上。

これがすべて役立つことを願っています!

于 2012-11-25T06:14:56.300 に答える