Generic Repository パターンは初めてです。汎用リポジトリを使ってメソッドを追加、更新、削除、検索するサンプルを作成してみました。私のサンプルコードを見つけて、
汎用リポジトリ インターフェイスとクラス:
public interface IRepository<T> : IDisposable where T : class
{
IEnumerable<T> Find(Func<T, bool> predicate);
void Add(T entity);
void SaveChanges();
}
public class DataRepository<T> : IRepository<T> where T : class
{
private ObjectContext _context;
private IObjectSet<T> _objectSet;
public DataRepository(ObjectContext context)
{
_context = context;
_objectSet = _context.CreateObjectSet<T>();
}
public IEnumerable<T> Find(Func<T, bool> predicate)
{
return _objectSet.Where(predicate);
}
public void Add(T entity)
{
_objectSet.AddObject(entity);
}
}
そして、私は以下のようにこの方法を使用しました、
DataRepository<tblUser> _tblUser = new DataRepository<tblUser>(new SampleRepositoryEntities());
DataRepository<TestingTable> sampleRepository = new DataRepository<TestingTable>(new SampleRepositoryEntities());
public void GetRecords()
{
var record1 = sampleRepository.Find(f => f.id == 1).FirstOrDefault();
var record = _tblUser.Find(f => f.emailid == "karthik@abc.com").FirstOrDefault();
}
SampleRepositoryEntities のテーブル「TestingTable」から Find メソッドを使用してレコードを検索できます。このテーブルには 10 レコード前後のレコードが非常に少ないためです。
しかし、tbluser テーブルから電子メール ID に一致する最初のレコードを見つけようとしました。このテーブルには 50,000 を超えるレコードがあり、この時点で結果を読み込み続けることができず、例外も発生していません。私は何を間違えましたか..誰か私にこれをはっきりさせてもらえますか?