エンティティごとにビジネス レイヤ クラスを作成する必要がありますか?
いいえ、それは本当に必要ではありません。ビジネスは、ビジネス オペレーションを実行するために複数のリポジトリ エンティティを使用する場合があります。たとえば、CheckOutOrder クラスには、支払い、配送、在庫などの種類のリポジトリ操作が含まれる場合があります。これはビジネス層であり、データが永続ストレージによってどのように表現されているかを認識しない必要があります。
2番目の質問に対処します。リポジトリパターンは、データアクセスレイヤーに配置する抽象化レイヤーです(たとえば、ADO.NET/EF/NHibernateのようなORM)IMO、本当にリポジトリパターンを使用したい場合は、導入していることを覚えておいてください余分なレイヤー。
リポジトリ層は次のようになります。
IRespository<T>
RespositoryBase<T> : IRepository<T>
さらに、汎用性を維持したい場合は、それも問題ありません。ただし、ジェネリック関数が基本クラスに残っていることを確認してください。すべてのリポジトリで汎用コードを再利用するためにやりたいことです。これで、エンティティごとに専用のクラスを作成できます。
ProviderRepository : RepositoryBase<ProviderEntity>
リポジトリの各タイプに抽象化を導入して、エンティティ固有のメソッドを表すこともできます。
ProviderRepository : RepositoryBase<ProviderEntity>
ProviderRepository : RepositoryBase<ProviderEntity>, IProviderRepository
実際の実装は異なる場合がありますが、これは、有利なスタートを切るためのアイデアを提供するためのデモンストレーションです。インターネット上でリポジトリ パターンの膨大な実装を見つけることができます。しかし、最初にそれを理解し、シンプルに保つことをお勧めします。