nhibernate:如何查询父实体内的集合

时间:2010-06-08 09:55:09

标签: nhibernate

我有以下方法。如果我删除以下行

,这可以正常工作
.Add(Restrictions.Eq("Product.IsPopItem", true))

错误消息是

无法解析属性:Product.IsPopItem:EStore.Domain.Model.ProductCategory

我确信“Product.IsPopItem”已正确映射,因为我可以调用此属性。我需要添加一些标准吗?

 public ICollection<ProductCategory> FindByCompanyIdAndCategoryIdAndIsPop(int companyId, int id)
    {
        var products = _session
            .CreateCriteria(typeof(ProductCategory))
            .Add(Restrictions.Eq("CompanyId", companyId))
            .Add(Restrictions.Eq("CategoryId", id))
            .Add(Restrictions.Eq("Product.IsPopItem", true))
            .List<ProductCategory>();
        return products;
    }

1 个答案:

答案 0 :(得分:4)

是的,您需要添加.CreateAleas

 .CreateAlias("Product", "product", JoinType.InnerJoin)

请根据需要更改JoinType,并使用“product”别名而不是属性名称“Product”

所以最终应该是这样的:

.CreateCriteria(typeof(ProductCategory))
        .CreateAlias("Product", "product", JoinType.InnerJoin)
        .Add(Restrictions.Eq("CompanyId", companyId))
        .Add(Restrictions.Eq("CategoryId", id))
        .Add(Restrictions.Eq("product.IsPopItem", true))
        .List<ProductCategory>());
        return products;