2012-04-25 118 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

請出示您的映射。 – 2012-04-25 12:22:11

回答

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") 
相關問題