简单的QueryOver:无法识别的方法调用

Ehs*_*san 12 c# nhibernate queryover

我有一个简单的QueryOver

var q = SessionInstance.QueryOver<Person>().Where(p => p.Number.Equals(number));
Run Code Online (Sandbox Code Playgroud)

数字字段类型为int.此消息的此查询有运行时错误:

无法识别的方法调用:System.Int32:Boolean Equals(Int32)

Iul*_*scu 28

==操作者产生一个BinaryExpression其可以被转换为SQL和.Equals()方法生成一个MethodCallExpression这显然是转换为SQL.

通常情况下,二元运算符是在处理QueryOver以及在LINQ的,但只有少数几个方法来处理呼叫(string.Contains,array.Contains等),让你更好地使用运营商在可能的情况.

还要记住,操作符/方法调用实际上并未执行,而是转换后的SQL语句,因此如果您有自定义覆盖/实现,它们可能无法按预期工作.

鉴于上述情况,您的代码将被重写为:

var q = SessionInstance.QueryOver<Person>().Where(p => p.Number == number);
Run Code Online (Sandbox Code Playgroud)