我是通用存储库模式的新手。我尝试创建一个示例来使用通用存储库添加、更新、删除和查找方法。找到我的示例代码,
通用存储库接口和类:
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();
}
我可以使用 Find 方法从 SampleRepositoryEntities 中的“TestingTable”表中找到记录。因为这个表的记录非常少,大约 10 条记录。
但是我试图从 tbluser 表中找到与电子邮件 ID 匹配的第一条记录,该表有超过 50,000 条记录,我无法得到结果,此时继续加载,也没有任何异常。我做错了什么..有人可以让我澄清一下吗?