实体框架和谓词生成器-谓词在SQL查询中被忽略

欧文

我在使用EF和Predicate Builder时遇到问题。我已经看完所有说明,并且可以肯定我做的一切都正确,但是当我运行SQL Profiler并检查去往数据库的查询时,它会忽略我的谓词并获取表中的每条记录,而这表目前最多可容纳600,000行,因此它会稍微减慢速度。在数据库查询后,我的谓词将被应用。

有人可以告诉我我所缺少的吗?

var predicate = PredicateBuilder.True<ListRecord>();

var classFilter = PredicateBuilder.False<ListRecord>();
classFilter = classFilter.Or(x => x.Community == "Air Force");
classFilter = classFilter.Or(x => x.Community == "Navy");
predicate = predicate.And(classFilter);

// Add several more predicates just like classFlter

var query = db.ListRecords.AsExpandable().Where(predicate.Compile());
var list = query.ToList();

我复制的示例是http://www.albahari.com/nutshell/predicatebuilder.aspx上的嵌套谓词

这是正在生成的SQL:

SELECT 
[Extent1].[ListRecordId] AS [ListRecordId], 
[Extent1].[Community] AS [Community]
-- And every other column from this table
FROM [dbo].[ListRecord] AS [Extent1]
亚当

我认为您不需要创建的第一个谓词。这样会不会返回您需要的结果?

var classFilter = PredicateBuilder.False<ListRecord>();
classFilter = classFilter.Or(x => x.Community == "Air Force");
classFilter = classFilter.Or(x => x.Community == "Navy");

// Add several more predicates just like classFlter

var query = db.ListRecords.AsExpandable().Where(classFilter);
var list = query.ToList();

或使用其他谓词,例如Classfilter:

var classFilter = PredicateBuilder.False<ListRecord>();
classFilter = classFilter.Or(x => x.Community == "Air Force");
classFilter = classFilter.Or(x => x.Community == "Navy");

var list = db.ListRecords.AsExpandable()
    .Where(classFilter)
    .Where(someOtherFilterLikeClassFilter)
    .Where(AnotherOneLikeClassFilter)
    .ToList();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

查询生成器和实体继承

来自分类Dev

实体框架6:如何覆盖SQL生成器?

来自分类Dev

谓词生成器C#混乱

来自分类Dev

LinqKit谓词生成器抛出TypeLoadException吗?

来自分类Dev

Gii模型生成器错误-表不存在-Yii框架和SQL Server 2000

来自分类Dev

SQL 查询生成器 - 分组和排序 (Laravel)

来自分类Dev

Prolog:谓词,判断给定的整数是否为2的幂并可用作生成器

来自分类Dev

Prolog:谓词,判断给定的整数是否为2的幂并可用作生成器

来自分类Dev

代表和谓词查询

来自分类Dev

在查询生成器和Symfony2之间

来自分类Dev

多对多关系和查询生成器

来自分类Dev

查询生成器-如何链接分页和keyBy?

来自分类Dev

Laravel 查询生成器多选和命名列

来自分类Dev

SQL Server命令生成器和自动递增ID

来自分类Dev

SQL Server命令生成器和自动递增ID

来自分类Dev

SQL Server查询生成器错误?

来自分类Dev

Sql 查询生成器 - Symfony

来自分类Dev

实体框架生成的SQL查询

来自分类Dev

Outlook查询生成器

来自分类Dev

Yii查询生成器结果(带有联接和子查询的纯SQL)

来自分类Dev

如何在实体框架中使用 lambda 表达式和谓词

来自分类Dev

Prolog谓词(\ =)/ 2被忽略

来自分类Dev

Symfony主义查询生成器查找具有多对一关系的实体

来自分类Dev

未实现的SQL谓词生成

来自分类Dev

未实现的SQL谓词生成

来自分类Dev

谓词和半谓词

来自分类Dev

Laravel查询生成器查询

来自分类Dev

核心数据谓词:谓词的未实现SQL生成

来自分类Dev

实体框架-Distinct和Max生成巨大(且缓慢)的查询