インターフェイスの代わりに、リポジトリを抽象クラス(ベースリポジトリ)から継承したいと思います。リポジトリの単体テストは行わず(代わりにサービスレイヤーの単体テストを行います)、このベースリポジトリから継承するすべてのリポジトリクラスに同じ実装をコピーしたくないため、抽象クラスを使用することにしました。 。
例えば:
public abstract class BaseRepository<T> where T : class
{
protected DbSet<T> dbSet;
public BaseRepository(DbContext dataContext)
{
dbSet = dataContext.Set<T>();
}
public void Insert(T entity)
{
dbSet.Add(entity);
}
public IEnumerable<T> SearchFor(Expression<Func<T, bool>> predicate)
{
return dbSet.Where(predicate);
}
public IEnumerable<T> GetAll()
{
return dbSet;
}
public T GetById(int id)
{
return dbSet.Find(id);
}
}
このベースリポジトリから継承する他のリポジトリを作成しようとすると、コンストラクタで問題が発生します。これらの派生クラスにデータコンテキストを渡して、それらを使用できるようにするにはどうすればよいですか?