Отличный запрос nHibernate - PullRequest
0 голосов
/ 13 мая 2010

Код

IList VendorList;

                VendorList = session
                    .CreateCriteria<VendorLookup>()
                    .Add(Expression.Eq("NetworkRunId", networkRunId))
                    .Add(Expression.Not(Expression.Eq("VendorName", " ")))  
                    .SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer())
                    .AddOrder(new Order("VendorName", true))
                    .List<IVendorLookup>().Distinct<IVendorLookup>().ToList();

Сгенерированный запрос Пожалуйста, помогите мне

SELECT   this_.Sp    as HCO1_25_0_,
         this_.NID  as Network2_25_0_,
         this_.Vname as HCO3_25_0_
FROM     HCO_V_Lookup this_
WHERE    this_.NID = 5 /* @p0 */
         and not (this_.VNAME = ' ' /* @p1 */)
ORDER BY this_.VNAME asc

Ответы [ 2 ]

0 голосов
/ 13 мая 2010
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 people = criteria.List();
0 голосов
/ 13 мая 2010

Полагаю, вам интересно, почему DISTINCT не появляется в SQL. Это потому, что он применяется в запросе критериев в качестве преобразователя результатов - результаты запроса SQL фильтруются, чтобы их можно было отличить после выполнения запроса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...