假设使用NH 3.4和RepositoryPattern
进行以下查询var list = _repository
.QueryOver()
.Where(x => (x.Age > 20)) // notice the parantheses
.Future()
.ToList();
这些parantheses添加了NH无法正常工作,并导致SO异常。
如果用.Where(x => (x.Age > 20))
替换.Where(x => x.Age > 20)
它按预期工作。
从大局来看,这是一个简化的场景。在制作中,我将.Where(...)
传递给参数Expression<Func<Person, bool>> where
答案 0 :(得分:1)
我怀疑错误是存在的:
Expression<Func<MyClass, bool>> mc1 = x => (x.ID > 20);
Expression<Func<MyClass, bool>> mc2 = x => x.ID > 20;
var body1 = mc1.Body.NodeType; // GreatThan
var body2 = mc2.Body.NodeType; // GreatThan
编译器删除括号。表达式树中没有任何内容&#34;语言&#34; (类系统)明确表示括号。