我希望使用NHibernate Criteria Query
执行以下操作我有“产品”,其中有0到多个“媒体”
产品可以与1到多个ProductCategories
相关联这些使用middled中的表来创建连接
ProductCategories
标识
标题ProductsProductCategories
ProductCategoryId
产品编号产品
标识
标题ProductMedias
产品编号
MediaId媒体
标识
MediaType
我需要实现条件查询以返回ProductCategory中的所有产品以及前1个关联媒体或不存在媒体(如果不存在)。
因此,虽然例如“T恤”可能有10个媒体关联,但我的结果应该类似于此
Product.Id Product.Title MediaId
1 T恤21
2鞋子无
3帽子43
我使用JoinType.LeftOuterJoin
尝试了以下解决方案1)productCriteria.SetResultTransformer(Transformers.DistinctRootEntity);
这没有用,因为转换完成了代码端,因为我有.SetFirstResult()和.SetMaxResults()用于分页目的它不会工作。
2).SetProjection(
Projections.Distinct(
Projections.ProjectionList() .Add(Projections.Alias(Projections.Property(“Id”),“Id”)) ...
.SetResultTransformer(Transformers.AliasToBean());
这没有奏效,因为我无法在预测中为Medias.Id填充值。 (类似于nHibernate Criteria API Projections)
非常感谢任何帮助