Pertanyaan Repositori generik - IRepository atau IRepository


Saya telah melihat dua pendekatan berbeda untuk menciptakan repositori generik. Apa perbedaan antara kedua pendekatan tersebut (pro dan kontra)? Tolong abaikan perbedaan dalam metode karena saya tertarik pada perbedaan antara

 public interface IRepository<T> where T : class

dan

 public interface IRepository : IDisposable

Apakah ada perbedaan dalam fungsionalitas, fleksibilitas, pengujian unit ...? Apa yang akan saya dapatkan atau kalah?
Apakah ada perbedaan bagaimana mereka terdaftar dalam kerangka kerja Ketergantungan Injeksi?

Pilihan 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();
 }

pilihan 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


asal


Jawaban:


Perbedaan terbesar adalah itu IRepository<T> terikat ke tipe tunggal sementara sebuah IRepository berpotensi terikat ke beberapa jenis. Mana yang tepat sangat tergantung pada skenario khusus Anda.

Secara umum saya temukan IRepository<T> menjadi lebih berguna. Pada saat digunakan itu sangat jelas apa isi dari IRepository<T> adalah (T). Di sisi lain itu tidak jelas dari yang diberikan IRepository apa yang terkandung di dalamnya.

Dalam kasus di mana saya harus menyimpan beberapa jenis objek, saya biasanya membuat peta IRepository<T> contoh. Contohnya: Dictionary<T,IRepository<T>>.


27
2017-12-05 20:54