回答

2

好的,這是我最終做的。
首先,我在global.asax Application_Start事件中設置了SharedEngineProvider。

protected void Application_Start(object sender, EventArgs e) 
{ 
    InitializeValidator(); 
} 

private void InitializeValidator() 
{ 
      NHibernateSharedEngineProvider provider = new NHibernateSharedEngineProvider(); 
      NHVConfigurationBase config = new NHVConfigurationBase(); 
      config.Properties[Environment.ApplyToDDL] = "true"; 
      config.Properties[Environment.AutoregisterListeners] = "true"; 
      config.Properties[Environment.ValidatorMode] = ValidatorMode.UseAttribute.ToString(); 
      config.Mappings.Add(new MappingConfiguration(Assembly.GetAssembly(typeof(User)).FullName, null)); 
      provider.GetEngine().Configure(config); 
      Environment.SharedEngineProvider = provider; 
} 

由於換頁,開始NH會議陋居攔截請求,我決定勾上PreInit事件與當前NH會話驗證集成。我有一個自定義的基本頁面(一個很好的做法,我認爲),所以我也加入了這個方法:

protected void Page_PreInit(object sender, EventArgs args) 
{ 
    Configuration cfg = new BurrowFramework().BurrowEnvironment.GetNHConfig("PersistenceUnit1"); 
    ValidatorInitializer.Initialize(cfg); 
} 

到目前爲止,似乎是工作的罰款。

要得到驗證引擎的引用我使用:

validatorEngine = Environment.SharedEngineProvider.GetEngine(); 
相關問題