Я пытаюсь создать способ создания общих хранилищ, которые работают с различными хранилищами данных:
public interface IRepository
{
IQueryable<T> GetAll<T>();
void Save<T>(T item);
void Delete<T>(T item);
}
public class MemoryRepository : IRepository {...}
public class SqlRepository : IRepository {...}
Я хотел бы работать против тех же классов домена POCO в каждом. Я также рассматриваю аналогичный подход, где каждый класс домена имеет свой собственный репозиторий:
public interface IRepository<T>
{
IQueryable<T> GetAll();
void Save(T item);
void Delete(T item);
}
public class MemoryCustomerRepository : IRepository {...}
public class SqlCustomerRepository : IRepository {...}
Мои вопросы: 1) Возможно ли, что первый подход возможен? 2) Есть ли какое-либо преимущество для второго подхода.