小编nov*_*dev的帖子

.Lambda表达式加载整个表

我已经使用代码优先方法建立了一个实体框架项目: 链接到代码优先方法

我添加了一个通过插入函数来访问存储库的方法:

存储库的接口:

IQueryable<T> GetMany(Func<T, bool> where);
Run Code Online (Sandbox Code Playgroud)

EntityRepositoryBase方法:

public virtual IQueryable<T> GetMany(Func<T, bool> where)
{
     return dbset.Where(where).AsQueryable();
}
Run Code Online (Sandbox Code Playgroud)

我如何访问它的示例:

genericRepositoryName.GetStuffInHere(x => x.Name== "Billy");
Run Code Online (Sandbox Code Playgroud)

但是,执行此操作时,它会加载整个表并向下过滤数据.你可以想象,这需要很长时间.我有一个使用.Find()的ByID方法,它正确执行查询并以毫秒为单位获取记录.我完全难以理解为什么会发生这种情况 - 或者我做错了什么.有没有更好的方法来获取带有字段的所有记录,比方说,它包含一个字符串"Hello".当前进程需要约5-10秒才能恢复记录.

c# asp.net asp.net-mvc lambda entity-framework

2
推荐指数
1
解决办法
222
查看次数

标签 统计

asp.net ×1

asp.net-mvc ×1

c# ×1

entity-framework ×1

lambda ×1