nHibernate генерирует правильный SQL, но возвращает пустые строки - PullRequest
0 голосов
/ 01 марта 2010

У меня следующий запрос ICriteria,

public override IQueryable<ApplicationVehicleSummary> GetQuery(ISession session)
    {
        ICriteria results = session.CreateCriteria<Part>()
           .Add(Restrictions.Eq("PartNumber", _partNumber))
           .CreateCriteria("Applications")
           .CreateAlias("Vehicles", "vehicle", global::NHibernate.SqlCommand.JoinType.InnerJoin)
           .SetProjection(Projections.Property("vehicle.Make"),
           Projections.Property("vehicle.Model"),
           Projections.Property("vehicle.Type"),
           Projections.Property("vehicle.Engine"),
           Projections.Property("vehicle.ProductionStart"),
           Projections.Property("vehicle.ProductionEnd"))
           .SetResultTransformer(Transformers.AliasToBean<ApplicationVehicleSummary>());

       return results.List<ApplicationVehicleSummary>().AsQueryable();
    }

И выдает следующий SQL.

SELECT vehicle2_.Make            as y0_,
   vehicle2_.Model           as y1_,
   vehicle2_.Type            as y2_,
   vehicle2_.Engine          as y3_,
   vehicle2_.ProductionStart as y4_,
   vehicle2_.ProductionEnd   as y5_
FROM   Parts this_
   inner join Applications applicatio1_
     on this_.PartId = applicatio1_.PartId
   inner join VehiclesToApplications vehicles5_
     on applicatio1_.ApplicationId = vehicles5_.ApplicationId
   inner join Vehicles vehicle2_
     on vehicles5_.VehicleId = vehicle2_.VehicleId
WHERE  this_.PartNumber = '0500-252' /* @p0 */

Когда я запускаю запрос из моего приложения, nHibernate возвращает правильное количество строк, но все поля пусты или пусты. Но когда я беру SQL, который он сгенерировал (из профилировщика nhibernate), и запускаю его на моей базе данных, он возвращает правильные результаты.

Что я делаю неправильно / отсутствует?

1 Ответ

0 голосов
/ 01 марта 2010

Либо используйте те же имена в качестве полей, либо укажите отображение явно:

.setProjection( Projections.projectionList()
               .add( Projections.property("vehicle.Model"), "fieldName1" )
               .add( Projections.property("vehicle.Type"), "fieldName2" )

или использовать атрибуты

также проверьте этот проект Свободный nHibernate

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