Pregunta Repositorio genérico - IRepository o IRepository


He visto dos enfoques diferentes para crear repositorios genéricos. ¿Cuáles son las diferencias entre esos dos enfoques (pros y contras)? Por favor dirija la diferencia en los métodos porque estoy interesado en la diferencia entre

 public interface IRepository<T> where T : class

y

 public interface IRepository : IDisposable

¿Hay alguna diferencia en funcionalidad, flexibilidad, pruebas de unidad ...? ¿Qué obtendré o perderé?
¿Hay alguna diferencia en cómo se registran en los marcos de Inyección de Dependencia?

Opción 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();
 }

opcion 2

 public interface IRepository : IDisposable
    {
        IQueryable<T> GetAll<T>();
        void Delete<T>(T entity);
        void Add<T>(T entity);
        void SaveChanges();
        bool IsDisposed();
    }

32
2017-12-05 20:50


origen


Respuestas:


La mayor diferencia es que IRepository<T> está vinculado a un solo tipo, mientras que una IRepository está potencialmente vinculado a múltiples tipos. Cuál es apropiado depende en gran medida de su situación particular.

En general, encuentro IRepository<T> ser más útil. En el momento del uso, es extremadamente claro en qué consiste el contenido de IRepository<T> son (T) Por otro lado, no está claro desde un punto de vista IRepository lo que está contenido dentro de él.

En los casos en que tengo que almacenar varios tipos de objetos, suelo crear un mapa de IRepository<T> instancias. Por ejemplo: Dictionary<T,IRepository<T>>.


27
2017-12-05 20:54