2011-09-09 63 views
0

这个代码NHibernate的标准误差

 public IList<Patient> GetByMRNNameDOB(Patient patient) 
    { 
     using (ISession session = SessionManager.Current.OpenSession()) 
     { 
      ICriteria criteria = session.CreateCriteria(typeof (Patient)) 
       .Add(Expression.Disjunction() 
         .Add(Expression.Eq("patient.MedicalRecordNumber", patient.MedicalRecordNumber)) 
         .Add(Expression.Conjunction() 
            .Add(Expression.Eq("patient.FirstName", patient.FirstName)) 
            .Add(Expression.Eq("patient.LastName", patient.LastName)) 
            .Add(Expression.Eq("patient.Birthday", patient.Birthday)))); 

      return criteria.List<Patient>(); 
     } 
    } 

抛出一个错误:

Could not resolve property: patient of: SolutionConsultants.WebScreening.Entities.Patients.Patient

Type for which Type.IsGenericParameter is true

什么想法?

回答

2
ICriteria criteria = session.CreateCriteria(typeof (Patient)) 
    .Add(Expression.Disjunction() 
        .Add(Expression.Eq("MedicalRecordNumber", 
             patient.MedicalRecordNumber)) 
        .Add(Expression.Conjunction() 
           .Add(Expression.Eq("FirstName", patient.FirstName)) 
           .Add(Expression.Eq("LastName", patient.LastName)) 
           .Add(Expression.Eq("Birthday", patient.Birthday)))) 
0

我不知道这是你的想法,但可能patient只是你想用于查询的别名,如果是这种情况,你可以简单地将它包含在CreateCriteria方法中,像这样( 没有测试,我离我的电脑):

ICriteria criteria = session.CreateCriteria(typeof(Patient), "patient"); 
... 

希望它能帮助!