Win32: Принесите окно к вершине

Чтобы выполнить отдельный запрос, вы можете установить проекцию по критериям в Projection.Distinct. Затем вы включаете столбцы, которые вы хотите вернуть. Затем результат превращается обратно в объект со строгой типизацией, устанавливая преобразователь результата в AliasToBeanResultTransformer - передавая тип, в который должен быть преобразован результат. В этом примере я использую тот же тип, что и сам объект, но вы можете создать другой класс специально для этого запроса.

ICriteria criteria = session.CreateCriteria(typeof(Person));
criteria.SetProjection(
    Projections.Distinct(Projections.ProjectionList()
        .Add(Projections.Alias(Projections.Property("FirstName"), "FirstName"))
        .Add(Projections.Alias(Projections.Property("LastName"), "LastName"))));

criteria.SetResultTransformer(
    new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Person)));

IList<Person> people = criteria.List<Person>();

Это создает SQL, аналогичный (по крайней мере, в SQL Server):

SELECT DISTINCT FirstName, LastName from Person

Обратите внимание, что в результате будут заполнены только те свойства, которые вы укажете в своей проекции.

Преимущество этого метода заключается в том, что фильтрация выполняется в базе данных, а не возвращает все результаты вашему приложению, а затем выполняет фильтрацию, что является поведением DistinctRootEntityTransformer.

31
задан 13 revs, 4 users 80%KenC 28 May 2009 в 15:02
поделиться

3 ответа

SwitchToThisWindow мне подходит лучше всего.

8
ответ дан 27 November 2019 в 22:25
поделиться

Вы пробовали SetActiveWindow () ?

4
ответ дан 27 November 2019 в 22:25
поделиться

SwitchToThisWindow () вообще не является устаревшим.
Я использую его в производственной среде 14 лет.
Посмотрите исходный код Windows, и вы увидите, что он называется везде ...

5
ответ дан 27 November 2019 в 22:25
поделиться
Другие вопросы по тегам:

Похожие вопросы: