1

我正在尝试在使用 Dapper Extensions 时对 MySQL 表进行不区分大小写的匹配,但是当尝试在 linq 表达式中将其设为大写时,字段名称出现空异常:

这是代码:

            var predicateGroup = new PredicateGroup { Operator = GroupOperator.Or, Predicates = new List<IPredicate>() };

            var term = "term";
            if (term.IsNotNullOrEmpty())
            {
                predicateGroup.Predicates.Add(Predicates.Field<Company>(p => p.company_code, Operator.Like, string.Format("%{0}%", term)));
                predicateGroup.Predicates.Add(Predicates.Field<Company>(p => p.company_name.ToUpper(), Operator.Like, string.Format("%{0}%", term)));
            }

            return Count<Company>(predicateGroup, TdsAuthConnectionString);

有人知道我如何使用 DapperExtensions 谓词进行不区分大小写的匹配吗?

谢谢你的帮助,codenewbie

4

1 回答 1

0

p => p.company_name片段是一个 Linq LambdaExpression<Func<T, object>>表达式,告诉 DapperExtensions 在其内部映射中使用什么属性名称。当您在那里使用大写时,它不是指向有效的属性名称,而是指向大写函数。

如果您正在寻找数据不区分大小写,这是您的数据库引擎的一个功能。如果您使用的是 Microsoft SQL Server,则数据区分大小写由数据库的排序规则控制。如果您使用的是不区分大小写的代码页,Latin1_General_CI_AS那么您发送到数据库的所有查询都是不区分大小写的。您可以通过运行以下 SQL 语句来检查服务器排序规则:

SELECT SERVERPROPERTY ('Collation')

您可以在此处找到排序规则列表及其区分大小写

于 2016-09-16T11:07:16.617 回答