QueryOver失败,无法解析属性:

use*_*086 2 nhibernate linq-to-nhibernate nhibernate-criteria

我正在使用NHibernate 3.0并且正在比较Query和QueryOver

var p = _prepo.Query<Party>()
            .Where(c => c.Person.LastName == "Bobby")
            .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

上面的工作,如果我查看对象图,我得到p.Person的代理类.

var p = _prepo.QueryOver<Party>()
            .Where(c => c.Person.LastName == "Bobby")
            .FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)

这个失败,错误==>无法解析属性:Person.LastName:

为什么?

Col*_*e W 6

我不熟悉Linq提供程序但是在使用时QueryOver你必须使用联接来执行这样的查询:

例1

IQueryOver<Cat,Kitten> catQuery =
session.QueryOver<Cat>()
    .JoinQueryOver(c => c.Kittens)
        .Where(k => k.Name == "Tiddles");
Run Code Online (Sandbox Code Playgroud)

例2

Cat catAlias = null;
Kitten kittenAlias = null;

IQueryOver<Cat,Cat> catQuery =
    session.QueryOver<Cat>(() => catAlias)
        .JoinAlias(() => catAlias.Kittens, () => kittenAlias)
        .Where(() => catAlias.Age > 5)
        .And(() => kittenAlias.Name == "Tiddles");
Run Code Online (Sandbox Code Playgroud)