NHibernate 抛出 'could not resolve property' 异常

NHibernate throwing 'could not resolve property' exception

我有以下公司,其属性如下(不包括 Id):

    public virtual Category Category { get; set; }

在 CompanyMap 中映射如下:

    HasOne(x => x.Category)
            .Cascade.All();

该类别只有属性:

    public virtual string Name { get; set; }

分类图:

    Map(x => x.Name)
            .Column("Name")
            .Length(40)
            .Unique();

数据库中table创建成功。

我有一个包含以下查询的存储库:

            var test = Session.QueryOver<Company>()
                              .WhereRestrictionOn(dbCompany => dbCompany.Category.Name)
                              .IsLike(category.Name);

category.name 是任何字符串。

然后我想访问数据库并获取结果:

    var result = test.List();

我得到以下异常:

    could not resolve property: Category.Name of: My.Name.Space.Company

查询结束有什么问题?

您缺少 Category 的连接。

试试这个:

Category catAlias = null;

var test = Session.QueryOver<Company>()
    .Left.JoinAlias(x => x.Category, () => catAlias) // Left is optional
    .WhereRestrictionOn(() => catAlias.Name)
    .IsLike(category.Name);