NHibernate используют Критерии количества (), Сначала ()

У меня есть вопрос о методе Критериев, one-many отношение к базе данных, 'каждый' - "учетная запись", 'многие' - "сайты", когда я использую CreateCriteria() что-то не правильно.

Как это: SessionFactory.OpenSession().CreateCriteria(typeof(Account)).List().Count();

Прежде чем это будет выполнено, я думаю, что SQL должен быть SELECT COUNT(*) FROM table, но SQL SELECT id, siteurl...FROM table. Так что случилось с этим? Как я могу решить его?

И First() метод должен быть SELECT TOP1 ...FROM table, но это SELECT ...FROM table

Я - новобранец Nhiberate, помогите мне.

5
задан Jean-Philippe Roy 23 June 2015 в 15:59
поделиться

1 ответ

Это происходит потому, что метод Count, который вы вызываете в конце, выполняется после выполнения запроса и вне базы данных. Вы подсчитываете только элементы списка в памяти. Чтобы добиться желаемого, можно использовать проекцию:

var count = session
    .CreateCriteria<Account>()
    .SetProjection(
        Projections.Count(Projections.Id())
    )
    .UniqueResult<long>();
12
ответ дан 13 December 2019 в 05:33
поделиться
Другие вопросы по тегам:

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