我有以下方法。如果我删除以下行
,这可以正常工作.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;
}
答案 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;