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)
| 归档时间: |
|
| 查看次数: |
5934 次 |
| 最近记录: |