2011-09-09 103 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"); 
... 

希望它能幫助!