Tôi đã cố gắng để tìm ra một cách để viết kho chung mà làm việc chống lại các cửa hàng dữ liệu khác nhau:Có phải tất cả chúng ta đang tìm kiếm cùng một IRepository?
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 {...}
tôi muốn làm việc với các lớp miền POCO giống nhau trong mỗi. Tôi cũng đang xem xét một cách tiếp cận tương tự, trong đó mỗi lớp miền có kho riêng của nó:
public interface IRepository<T>
{
IQueryable<T> GetAll();
void Save(T item);
void Delete(T item);
}
public class MemoryCustomerRepository : IRepository {...}
public class SqlCustomerRepository : IRepository {...}
Câu hỏi của tôi: 1) là phương pháp đầu tiên thậm chí khả thi? 2) Có lợi thế nào cho phương pháp thứ hai không.