2010-07-06 65 views
1

我在我的應用程序中使用延遲加載。當我在我的源代碼工作,並查看它在我的瀏覽器沒有任何問題,但是當我發表我的web應用程序,顯示此錯誤:NHibernate的延遲加載錯誤

The following types may not be used as proxies: 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsToChanged should be 'public/protected virtual' or 'protected internal virtual' 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsFromChanged should be 'public/protected virtual' or 'protected internal virtual' 
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

Exception Details: NHibernate.InvalidProxyTypeException: The following types may not be used as proxies: 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsToChanged should be 'public/protected virtual' or 'protected internal virtual' 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsFromChanged should be 'public/protected virtual' or 'protected internal virtual' 

Source Error: 

An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below. 

Stack Trace: 


[InvalidProxyTypeException: The following types may not be used as proxies: 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.Common.OrganizationalMonth: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.GroupTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.BusinessFramework.PartyService.BusinessEntities.RoleTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.JobTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Training.BusinessEntities.ClassSession: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.EmployeeWelfareTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.MissionOrderTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.StaffOrderComputaionTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpStartDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.Staff.BusinessEntities.InsuranceContractTimeFrame: field bkpEndDate should not be public nor internal 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsToChanged should be 'public/protected virtual' or 'protected internal virtual' 
Faraconesh.EnterpriseAppUnits.OfficeAutomation.BusinessEntities.SendingInformation: method IsFromChanged should be 'public/protected virtual' or 'protected internal virtual'] 
    NHibernate.Cfg.Configuration.ValidateEntities() +347 
    NHibernate.Cfg.Configuration.Validate() +13 
    NHibernate.Cfg.Configuration.BuildSessionFactory() +31 
    Faraconesh.ApplicationFramework.Core.DataAccess.NHibernateSessionManager.InitSessionFactory() +804 
    Faraconesh.ApplicationFramework.Core.DataAccess.NHibernateSessionManager..ctor() +39 
    Faraconesh.ApplicationFramework.Core.DataAccess.Nested..cctor() +39 

[TypeInitializationException: The type initializer for 'Nested' threw an exception.] 
    Faraconesh.ApplicationFramework.Core.DataAccess.NHibernateSessionManager.get_Instance() +61 
    System.Web.Administration.WebAdminModule.CommitAndCloseSession(Object sender, EventArgs e) +247 
    System.Web.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() +68 
    System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) +75 

是什麼原因。我該如何解決這個問題。我使用NHibernate 2.1.2和xml映射。

回答

2

我認爲你正在尋找use_proxy_validator設置,在你的配置中將其設置爲false。

此外,您可能想看看this thread

1

你必須標記bkpStartDate等,作爲virtual