2011-03-30 24 views
0

我無法弄清楚nHibernate的問題。 我的域名非常簡單。由於我的大部分數據都以分頁格(jqGrid)顯示,因此我需要使用未來<>來獲取總行數。 如果我跑這裏這個代碼塊它正常工作:Nhibernate 3.0:問題與未來<>和連接表上的限制

ICriteria FiltersCriteriaCount = session.CreateCriteria<Domain.Reminder>(); 
ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>(); 

var TotalRecords = FiltersCriteriaCount 
    .SetProjection(Projections.RowCount()) 
    .FutureValue<Int32>(); 

var sResult = FiltersCriteria 
    .CreateAlias("Company", "Company") 
    .CreateAlias("PlanType", "PlanType") 
    .CreateAlias("OperationsManager", "OperationsManager") 
    .CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin) 
    .SetFirstResult(0) 
    .SetMaxResults(100) 
    .Future<Domain.Reminder>() 
    .ToList<Domain.Reminder>(); 

,但如果我增加一個限制我得到一個異常could not resolve property: Schedules.Notes of: BpReminders.Domain.Reminder

ICriteria FiltersCriteriaCount = session.CreateCriteria<Domain.Reminder>(); 
ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>(); 

FiltersCriteriaCount.Add(Restrictions.Eq("Schedules.Notes", "")); 
FiltersCriteria.Add(Restrictions.Eq("Schedules.Notes", "")); 

var TotalRecords = FiltersCriteriaCount 
    .SetProjection(Projections.RowCount()) 
    .FutureValue<Int32>(); 

var sResult = FiltersCriteria 
    .CreateAlias("Company", "Company") 
    .CreateAlias("PlanType", "PlanType") 
    .CreateAlias("OperationsManager", "OperationsManager") 
    .CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin) 
    .SetFirstResult(0) 
    .SetMaxResults(100) 
    .Future<Domain.Reminder>() 
    .ToList<Domain.Reminder>(); 

如果我擺脫未來<的>和trasform我這樣的代碼一切工作正常:

ICriteria FiltersCriteria = session.CreateCriteria<Domain.Reminder>(); 
FiltersCriteria.Add(Restrictions.Eq("Schedules.Notes", "")); 

var sResult = FiltersCriteria 
    .CreateAlias("Company", "Company") 
    .CreateAlias("PlanType", "PlanType") 
    .CreateAlias("OperationsManager", "OperationsManager") 
    .CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin) 
    .SetFirstResult(0) 
    .SetMaxResults(100) 
    .List<Domain.Reminder>(); 

我找不到原因。 任何幫助將真的很感激。

回答

2

我會說,試試這個:

var TotalRecords = FiltersCriteriaCount 
    .CreateAlias("Schedules", "Schedules", NHibernate.SqlCommand.JoinType.LeftOuterJoin) 
    .SetProjection(Projections.RowCount()) 
    .FutureValue<Int32>(); 
+0

感謝弗洛裏安。我應該想到這個: - 傻傻的錯誤。大。 – LeftyX 2011-03-30 12:22:31