一般的なリポジトリを作成するための2つの異なる方法があります。これら2つのアプローチ(賛否両論)の違いは何ですか?私は一般リポジトリ - IRepository <T>またはIRepository
public interface IRepository<T> where T : class
と
public interface IRepository : IDisposable
の違いに興味を持っていますので 機能性、柔軟性、ユニットテストのいずれかの違いがある方法の違いをdiregardください...?私は何を得るか、失うでしょうか?
Dependency Injectionフレームワークでどのように登録されているかに違いはありますか?
オプション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();
}
オプション2
public interface IRepository : IDisposable
{
IQueryable<T> GetAll<T>();
void Delete<T>(T entity);
void Add<T>(T entity);
void SaveChanges();
bool IsDisposed();
}
私のエンティティが非常に異なるメソッドを持っている場合、すべてのエンティティは、まったく使用しないかもしれないメソッドの空の実装を持つため、IRepositoryを実装することはお勧めしません。 IRepository あなたのエンティティに多くの一般的なメソッドがある場合のみ、リポジトリクラスに空のメソッドが含まれるようになります。 –
msfanboy
私は空の方法が巨大な世界的な太陽の才能と同じくらい危険だとは思わない。 – ProfK