如何使用 NHibernate 从数据库中检索特定字段

本文关键字:检索 字段 数据库 何使用 NHibernate | 更新日期: 2023-09-27 18:32:07

我一直在尝试使用NHinernate从数据库中检索特定字段。问题是我的用户列表不断返回 null。

我该怎么办?这是我的代码:

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;
}

如何使用 NHibernate 从数据库中检索特定字段

可能,你必须使用 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")