2012-04-25 5 views
0

Я пытаюсь извлечь определенные поля из моей базы данных, используя NHinernate. Проблема в том, что список моих пользователей возвращает null.Как использовать NHibernate для извлечения определенных полей из базы данных?

Что мне делать? Вот мой код:

public IList<Users> GetHospitalStaff(string name) { 
     ISession session = NHibernateHelper.OpenSession(); 
     ICriteria crt = session.CreateCriteria<Users>(); 
     crt.Add(Restrictions.Eq("HospitalName", name)); 
     crt.Add(!Restrictions.Eq("Role", "admin")); 
     IList<Users> users = crt.SetProjection(Projections.ProjectionList() 
     .Add(Projections.Property("Name")) 
     .Add(Projections.Property("Email")) 
     .Add(Projections.Property("Telephone")) 
     .Add(Projections.Property("DateOfBirth")) 
     .Add(Projections.Property("HospitalName")) 
     .Add(Projections.Property("Role"))) 
     .SetResultTransformer(new NHibernate.Transform.AliasToBeanResultTransformer(typeof(Users))) 
     .List<Users>(); 

     session.Close(); 
     return users; 
} 
+0

Пожалуйста показать свое отображение. –

ответ

0

Возможно, вам придется использовать Projection.Alias():

Projections.ProjectionList() 
    .Add(Projections.Alias(Projections.Property("Name"), "Name")) 
    .Add(Projections.Alias(Projections.Property("Email"), "Email")) 
    .Add(Projections.Alias(Projections.Property("Telephone"), "Telephone")) 
    .Add(Projections.Alias(Projections.Property("DateOfBirth"), "DateOfBirth")) 
    .Add(Projections.Alias(Projections.Property("HospitalName"), "HospitalName")) 
    .Add(Projections.Alias(Projections.Property("Role"), "Role")) 

на карту ваших полей назад.

Или просто указать второй параметр .Add() метода:

Projections.ProjectionList() 
    .Add(Projections.Property("Name"), "Name") 
    .Add(Projections.Property("Email"), "Email") 
    .Add(Projections.Property("Telephone"), "Telephone") 
    .Add(Projections.Property("DateOfBirth"), "DateOfBirth") 
    .Add(Projections.Property("HospitalName"), "HospitalName") 
    .Add(Projections.Property("Role"), "Role") 
Смежные вопросы