gpt4 book ai didi

c# - 简单 QueryOver : Unrecognised method call

转载 作者:可可西里 更新时间:2023-11-01 08:17:07 26 4
gpt4 key购买 nike

我有一个简单的 QueryOver

var q = SessionInstance.QueryOver<Person>().Where(p => p.Number.Equals(number));

Number 字段类型为 int。此查询因此消息而出现运行时错误:

Unrecognised method call: System.Int32:Boolean Equals(Int32)

最佳答案

== 运算符生成一个 BinaryExpression可以将其转换为 SQL 并且 .Equals() 方法生成 MethodCallExpression这显然没有转换为 SQL。

通常二元运算符在 QueryOver 和 Linq 中处理,但只处理少数方法调用(string.Containsarray.Contains 等),因此您最好尽可能使用运算符。

另请记住,运算符/方法调用实际上并未执行,而是转换后的 SQL 语句,因此如果您对它们进行自定义覆盖/实现,它们可能无法按预期工作。

鉴于以上你的代码将被重写为:

var q = SessionInstance.QueryOver<Person>().Where(p => p.Number == number);

关于c# - 简单 QueryOver : Unrecognised method call,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7455002/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com