Ich habe zwei verschiedene Ansätze zum Erstellen von generischen Repositories gesehen. Was sind die Unterschiede zwischen diesen beiden Ansätzen (Vor- und Nachteile)? Bitte diregard Unterschied in den Methoden, weil ich in Unterschied interessiert bin zwischenGenerisches Repository - IRepository <T> oder IRepository
public interface IRepository<T> where T : class
und
public interface IRepository : IDisposable
Gibt es einen Unterschied in der Funktionalität, Flexibilität, Unit-Tests ...? Was werde ich bekommen oder verlieren?
Gibt es einen Unterschied, wie sie in Dependency Injection-Frameworks registriert sind?
Option 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();
}
Option 2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}
Wenn meine Entitäten sehr unterschiedliche Methoden haben, empfehle ich nicht, IRepository für jede Entität zu implementieren, da jede Entität dann eine leere Implementierung einer Methode hat, die sie möglicherweise gar nicht verwendet. Do IRepository Nur wenn Ihre Entitäten viele gemeinsame Methoden haben, werden Ihre Repository-Klassen am Ende leere Methoden enthalten. –
msfanboy
Ich glaube nicht, dass eine leere Methode so gefährlich ist wie ein riesiges, weltumspannendes Sonnenflair. – ProfK