Проекты nHibernate QueryOver - это Select и Где одно и то же? - PullRequest
0 голосов
/ 09 июня 2011

При использовании nHibernate QueryOver, если я хочу применить проекцию для производительности, это «Выбрать» и «Где» - это одно и то же? Другими словами, будет ..

        var member = session.QueryOver<Member>()
            .Select( projections => projections.Email == model.Email )
            .Take(1).SingleOrDefault();

Выполнить так же, как

        var member = session.QueryOver<Member>()
            .Where( context => context.Email == model.Email )
            .Take(1).SingleOrDefault();

Или есть разница в двух?

Ответы [ 2 ]

1 голос
/ 09 июня 2011

Без обид, но я думаю, что лучший способ ответить на вопрос, подобный тому, который вы задали, это попробовать.Иногда все становится яснее, когда вы видите результат.

Тем не менее, когда вы используете Select, вы говорите NHibernate, как проецировать ваши данные.Это определяет окончательный состав данных, полученных в результате запроса.Это немного больше, но это общая идея.Вы используете Where, когда хотите указать критерии, которым должны удовлетворять запрашиваемые данные.

1 голос
/ 09 июня 2011

Select проектов (вы также можете сказать карты ); Where фильтры. Это то же самое, что SQL и все поставщики LINQ (и QueryOver также является своего рода поставщиком LINQ). Кажется, что в этом случае вы хотите фильтровать, а не проецировать, поэтому вам нужно Where

...