0

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

1 に答える 1

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()または、メソッドの 2 番目のパラメーターを指定するだけです。

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")
于 2012-04-25T12:29:35.807 に答える