Я хочу сделать следующее, используя запрос NHibernate Criteria
У меня есть "Product" s, который имеет 0 ко многим "Media" s
Продукт может быть связан с 1 по многим категориям продуктов
Они используют таблицу в середине для создания объединения
ProductCategories
Id
Название
ProductsProductCategories
ProductCategoryId
PRODUCTID
Продукты
Id
Название
ProductMedias
PRODUCTID
MediaId
Medias
Id
MediaType
Мне нужно реализовать запрос критерия, чтобы вернуть все продукты в категории продуктов и первые 1 связанный носитель или нет носителя, если его нет.
Таким образом, хотя, например, к "футболке" может быть привязано 10 медиаданных, мой результат должен быть примерно таким:
Product.Id Product.Title MediaId
1 футболка 21
2 Туфли Null
3 Шляпа 43
Я пробовал следующие решения, используя JoinType.LeftOuterJoin
1) productCriteria.SetResultTransformer (Transformers.DistinctRootEntity);
Это не сработало, поскольку преобразование выполняется на стороне кода, и, поскольку у меня есть .SetFirstResult () и .SetMaxResults () для целей подкачки, оно не будет работать.
2). SetProjection (
Projections.Distinct (
Projections.ProjectionList ()
.Add (Projection.Alias (Projection.Property ("Id"), "Id"))
...
.SetResultTransformer (Transformers.AliasToBean ());
Это не сработало, так как я не могу заполнить значение Medias.Id в проекциях. (Аналогично Прогнозы API nHibernate Criteria )
Любая помощь будет принята с благодарностью