Widziałem dwa różne podejścia do tworzenia repozytoriów generycznych. Jakie są różnice między tymi dwoma podejściami (za i przeciw)? Proszę diregard różnicę w metodach, bo jestem zainteresowany różnicy międzyGeneric repozytorium - IRepository <T> lub IRepository
public interface IRepository<T> where T : class
i
public interface IRepository : IDisposable
Czy jest jakaś różnica w funkcjonalności, elastyczności, testów jednostkowych ...? Co otrzymam lub stracę?
Czy jest jakaś różnica w jaki sposób są one rejestrowane w zależności ram wtryskowe?
Wariant 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();
}
Wariant 2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}
Kiedy moi podmioty mają bardzo różne metody nie polecam realizacji IRepository dla każdej jednostki, ponieważ każda jednostka będzie wtedy mieć pusty wdrożenie metody, które nie mogą używać w ogóle. Do IRepository tylko wtedy, gdy podmioty mają wiele wspólnych metod indziej repozytorium klas skończy zawierający pustych metod. –
msfanboy
Nie sądzę, że pusta metoda jest tak niebezpieczna jak gigantyczna, kończąca świat energia słoneczna. – ProfK