エンティティごとのリポジトリから集約ルートごとのリポジトリにアプリケーションをリファクタリングしようとしています。
基本的な例として、Cars のエンティティ ルートがあるとします。車にはレンタカー契約があります。私が見る限り、契約は車なしでは存在しないため、車は集約ルートです。
システム内のすべてのコントラクト (ルート エンティティのすべての子エンティティ) を表示するユーザー ビューを実装しようとしています。リファクタリングする前に、コントラクト リポジトリに移動して All を取得するだけで済みました。コントラクト リポジトリが削除されたため (ルートではないため)、すべての車をリポジトリから取り出して、すべてのコントラクトを取得する必要があります。
私のリポジトリにはインターフェースがあります
public interface ICarRepository
{
IQueryable<Car> All { get; }
IQueryable<Car> AllIncluding(params Expression<Func<Car, object>>[] includeProperties);
Car Find(long id);
void InsertOrUpdate(Car car);
void Delete(long id);
void Save();
}
ICarManagementService を作成し、GetAllContracts メソッド (おそらくフィルター パラメーターを使用) を持たせることを考えました。それは、契約ですべての自動車エンティティを引き出してから、雇用契約に関連付けられている各エンティティを取得してそれらをフィルタリングするために必要なすべての契約を取得することを意味しますか?
次に、これらをコントローラーに渡し、以前と同じようにコントラクトを AutoMap します。
これはベストプラクティスですか?
ありがとう
グレアム