.Net实体框架&;波科。。。查询全表问题
我正试图用从edmx自动生成的poco对象实现一个存储库模式 在我的存储库类中,我有:.Net实体框架&;波科。。。查询全表问题,.net,entity-framework,linq-to-entities,poco,.net,Entity Framework,Linq To Entities,Poco,我正试图用从edmx自动生成的poco对象实现一个存储库模式 在我的存储库类中,我有: IObjectSet<E> _objectSet; private IObjectSet<E> objectSet { get { if (_objectSet == null) { _objectSet = this._context.CreateObjectSet<E>(); }
IObjectSet<E> _objectSet;
private IObjectSet<E> objectSet
{
get
{
if (_objectSet == null)
{
_objectSet = this._context.CreateObjectSet<E>();
}
return _objectSet;
}
}
public IQueryable<E> GetQuery(Func<E, bool> where)
{
return objectSet.Where(where).AsQueryable<E>();
}
public IList<E> SelectAll(Func<E, bool> where)
{
return GetQuery(where).ToList();
}
ioobjectset\u objectSet;
私有IObjectSet对象集
{
得到
{
如果(_objectSet==null)
{
_objectSet=this._context.CreateObjectSet();
}
返回对象集;
}
}
公共IQueryable GetQuery(Func-where)
{
返回objectSet.Where(Where).AsQueryable();
}
公共IList SelectAll(函数,其中)
{
返回GetQuery(where.ToList();
}
其中E是我的POCO类之一。当我跟踪数据库并运行以下操作时:
IList<Contact> c = contactRepository.SelectAll(r => r.emailAddress == "myemail@email.com");
IList c=contactRepository.SelectAll(r=>r.emailAddress==”myemail@email.com");
它在sql跟踪中显示为“选择联系人表中的所有内容”。我哪里出了问题?
有更好的方法吗?对象集是否不是惰性加载。。。所以它省略了where子句?
这是我读过的文章,上面说要使用objectSet的。。。因为有了POCO,我没有EntityObject要传递到“E”
使用表达式
而不是函数
。第一个命令告诉C#编译器发出一个表达式树(用于构建SQL查询),而不是实际的代码,第二个命令是一个普通的委托。这意味着您当前正在数据库调用后使用Linq对对象进行过滤