Я видел два разных подхода к созданию универсальных репозиториев. Каковы различия между этими двумя подходами (плюсы и минусы)?
Пожалуйста, обратите внимание на разницу в методах, потому что меня интересует разница между
public interface IRepository<T> where T : class
и
public interface IRepository : IDisposable
Есть ли разница в функциональности, гибкости, модульном тестировании ...? Что я получу или потеряю?
Есть ли разница, как они регистрируются в структурах внедрения зависимостей?
Вариант 1
public interface IRepository<T> where T : class
{
T Get(object id);
void Attach(T entity);
IQueryable<T> GetAll();
void Insert(T entity);
void Delete(T entity);
void SubmitChanges();
}
Вариант 2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}