私の質問は、Stack Overflowでのこれと同様です。ビジネスレイヤー内で作業ユニット/リポジトリを使用する正しい方法は何ですか?
シナリオ:
- .Netソリューション
- DBからオブジェクトを取得するために使用されるIRepository
- IUnitOfWorkを使用して複数のリポジトリ間でトランザクションを許可
これは私には理にかなっていて、私はこれらの線に沿ってうまく機能する何かを実装しました。ここで、ビジネスロジックレイヤーを紹介したいと思いますが、3つの要素(BLL、UnitOfWork、およびリポジトリ)を整理することに頭が悩んでいます。
私の理解:
- リポジトリ-データの取得、操作
- UnitOfWork-永続性
- BLL-ビジネスに関連するロジック(「現実世界」)(その用語は嫌いです!)
ASP.Net MVCフロントエンドがあるとします。
BLLはどのように見え、それを使用するMVCコントローラーはどのように見えますか?
参考までに:私のIUnitOfWork / IRepository実装が私の混乱の根本的な原因であるのではないかと思います。
public class IRepository<T>
{
private IObjectSet<T> objSet;
public IRepository<T>(IUnitOfWork uow)
{
objSet = uow.CreateObjectSet<T>();
}
public IQueryable<T> Add(T entity)
{
objSet.Add(entity);
}
//etc. etc. for delete, attach, getall
}
したがって、BLLがある場合は、それをIUnitOfWorkに渡して、必要なIRepositoryインスタンスを作成できるようにする必要があるように感じます。しかし、BLL(フロントエンドとは別のDLL)は、ビルドするIRepositoryの実装をどのように「認識する」のでしょうか。