MVCアプリケーションでEntityフレームワークでDependency Injectionを使用しようとしました。このプロジェクトでは、CRUD操作のためのGeneric Repositoryクラスを定義しました。各モデルオブジェクトには、具体的なサービスクラスがあります。プレゼンテーションレイヤのMy Controllerは、具体的なクラスのサービスレイヤを使用してデータベースからデータを取得します。これらの具象クラスは、RepositoryClassメソッドを呼び出して、データベースで実際の操作を実装します。以下実行方法Enitityフレームワーク内の依存関係注入で複数のモデルでクエリを実行
クラスdefinations(簡単にするために、私は、様々なインタフェースの詳細と、いくつかのメソッドの実装を削除した)のサンプルである:
class RepositoryBase<T>
{
Add(T entity) {...}
Update (T entity) {...}
Delete (T entity) {...}
T GetById(int id) {...}
IEnumerable<T> GetAll()
{dbContext.ToList();}
}
public class CarsService {
public IEnumerable<Cars> GetCars()
{
var cars = RepositoryBase<Cars>.GetAll();
return cars;
}
public Car GetCar(int id)
{
var car = RepositoryBase<T>.GetById(id);
return car;
}
}
Public class DealerService {...}
すべてこれは限り私が1つのオブジェクトタイプに対処しなければならないように素晴らしい作品私のアプリケーションの時間。しかし、私は、複数のエンティティ、すなわち自動車とディーラーのデータを取得するためにサービスクラスを変更する方法がわかりません。 Car modelsで定義されているディーラーIDがありますが、ナビゲーションプロパティがありませんが、私のシナリオでは注意してください。だから私は車とディーラーlinqクエリを使用して参加する必要があります。
修正が必要な正しいクラス(レイヤー)を識別するのに役立ちます。私が見つけたすべての例は、一度に1つのエンティティについてしか話しません。あなたは、ナビゲーションプロパティを使用しない場合
に追加
を使用する必要があります。 EFの 'ObjectContext'は作業単位であるか、それを抽象化することができます(この記事のように)(http://www.cuttingedge.it/blogs/steven/pivot/entry.php?id=84) 。 – Steven
EFと作業単位のパターンの別の[良い記事](http://msdn.microsoft.com/en-us/library/ff714955.aspx) –
アプリケーションで作業単位パターンを使用しています。質問を簡単にするためにここにコードには含まれていません。 –