Matt Petters の DDD に関するブログを読みました
それに応じて、エンティティごとにリポジトリ(インターフェース)を作成し、その後、リポジトリのインスタンス(インターフェースとして宣言)を提供するRepositoryFactoryを作成すると言われています
これはプロジェクトがDDDを使用して行われる方法ですか?
つまり、DDD を使用していると思われるプロジェクトを見ましたが、各リポジトリを直接呼び出していて、関連するファクトリはありませんでした。
そしてまた
なぜそんなに多くのリポジトリクラスを作成する必要があるのですか、なぜ次のようなものを使用しないのですか
public interface IRepository : IDisposable
{
T[] GetAll();
T[] GetAll(Expression<Func> filter);
T GetSingle(Expression<Func> filter);
T GetSingle(Expression<Func> filter, List<Expression<Func>> subSelectors);
void Delete(T entity);
void Add(T entity);
int SaveChanges();
}
SOLIDの原則に違反している可能性があると思いますが、それ以外の可能性はありますか?