Я хочу, чтобы попытаться ввести DISTINCT
ключевое слово в SQL, в основном я требую следующего SQL: -queryover и transformusing теряет способность к ленивой нагрузке
SELECT distinct this_.Id as y0_,
this_.Name as y1_,
this_.Description as y2_,
this_.UnitPrice as y3_,
this_.Director as y4_
FROM Product this_
inner join ActorRole actor1_
on this_.Id = actor1_.MovieId
WHERE this_.ProductType = 'Movie'
AND actor1_.Name like 'm%' /* @p0 */
Код QueryOver выглядит так, но я могу» т использовать DISTINCT ключевое слово без использования проекции: -
var movie = Session.QueryOver<Movie>()
.JoinQueryOver<Actor>(m => m.ActorList).Where(a => a.Name.IsLike("m%"))
.Select(
Projections.Distinct(
Projections.ProjectionList()
.Add(Projections.Property<Movie>(w => w.Id))
.Add(Projections.Property<Movie>(w => w.Name))
.Add(Projections.Property<Movie>(w => w.Description))
.Add(Projections.Property<Movie>(w => w.UnitPrice))
.Add(Projections.Property<Movie>(w => w.Director))
)
)
.TransformUsing(Transformers.AliasToBean<Movie>());
return movie.List<Movie>();
Это работает возвращает меня, различные фильмы, где актеры начинаются с буквы «м». Теперь проблема заключается в том, что проекция предназначена для DTO, и когда я повторяю результаты и хочу ленить загружать детей. Например: -
@foreach (var item in Model.ActorList)
{
<li>@(item.Name) <em>plays</em> @item.Role</li>
}
Model.ActorList
всегда NULL
, оказывается, что проектирование и использование трансформатора теряет отложенную загрузку, как этот метод предназначен для DTO-х. Какие у меня варианты?
Я знаю, что я могу использовать вспомогательный запрос или HQL, а не select distinct
Вы действительно должны опубликовать соответствующее содержание своего сообщения в блоге на этот ответ –
Вы прочитали сообщение в блоге? Нет ответа ... – Rippo