Tôi đã thấy hai phương pháp khác nhau để tạo kho lưu trữ chung. Sự khác nhau giữa hai cách tiếp cận (ưu và nhược điểm) là gì? Hãy diregard sự khác biệt trong phương pháp bởi vì tôi quan tâm đến sự khác biệt giữaKho lưu trữ chung - IRepository <T> hoặc IRepository
public interface IRepository<T> where T : class
và
public interface IRepository : IDisposable
Có sự khác biệt về tính năng, tính linh hoạt, kiểm tra đơn vị ...? Tôi sẽ bị mất gì?
Có sự khác biệt nào về cách chúng được đăng ký trong khung công tác Dependency Injection không?
Lựa chọ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();
}
Lựa chọn 2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}
Khi thực thể của tôi có các phương pháp rất khác nhau, tôi không khuyên bạn nên triển khai IRepository cho mọi thực thể vì mỗi thực thể sẽ có một triển khai trống của một phương thức mà nó có thể không sử dụng. Chỉ sử dụng IRepository nếu các thực thể của bạn có nhiều phương pháp phổ biến khác, các lớp Kho lưu trữ của bạn sẽ kết thúc bằng các phương thức trống. –
msfanboy
Tôi không nghĩ một phương pháp trống rỗng nào nguy hiểm như một thế giới khổng lồ, kết thúc thế giới. – ProfK