0

エンティティ フレームワークの実装を学習します。私は一般的なリポジトリを持っています。ビジネスレイヤーを実装したいと思います。これをコーディングする方法は知っていますが、どこでこれを行うべきか少しわかりません。

  1. エンティティごとにビジネス レイヤ クラスを作成する必要がありますか?

たとえば、データベースにはプロバイダー、代理店、および連絡先があります。汎用リポジトリが 1 つあります。ProviderManager、AgencyManager、および ContactManager を作成する必要がありますか?

  1. ビジネス層に加えて、エンティティごとに明示的なリポジトリが必要ですか?

たとえば、明示的な ProviderRepository が必要ですか?

4

2 に答える 2

0

エンティティごとにビジネス レイヤ クラスを作成する必要がありますか?

いいえ、それは本当に必要ではありません。ビジネスは、ビジネス オペレーションを実行するために複数のリポジトリ エンティティを使用する場合があります。たとえば、CheckOutOrder クラスには、支払い、配送、在庫などの種類のリポジトリ操作が含まれる場合があります。これはビジネス層であり、データが永続ストレージによってどのように表現されているかを認識しない必要があります。

2番目の質問に対処します。リポジトリパターンは、データアクセスレイヤーに配置する抽象化レイヤーです(たとえば、ADO.NET/EF/NHibernateのようなORM)IMO、本当にリポジトリパターンを使用したい場合は、導入していることを覚えておいてください余分なレイヤー。

リポジトリ層は次のようになります。

IRespository<T>
RespositoryBase<T> : IRepository<T>

さらに、汎用性を維持したい場合は、それも問題ありません。ただし、ジェネリック関数が基本クラスに残っていることを確認してください。すべてのリポジトリで汎用コードを再利用するためにやりたいことです。これで、エンティティごとに専用のクラスを作成できます。

ProviderRepository : RepositoryBase<ProviderEntity>

リポジトリの各タイプに抽象化を導入して、エンティティ固有のメソッドを表すこともできます。

ProviderRepository : RepositoryBase<ProviderEntity>

ProviderRepository : RepositoryBase<ProviderEntity>, IProviderRepository

実際の実装は異なる場合がありますが、これは、有利なスタートを切るためのアイデアを提供するためのデモンストレーションです。インターネット上でリポジトリ パターンの膨大な実装を見つけることができます。しかし、最初にそれを理解し、シンプルに保つことをお勧めします。

于 2016-02-10T17:42:08.103 に答える