在Burrow ASP.net应用程序上配置NHibernate验证器

时间:2009-09-11 13:17:36

标签: asp.net nhibernate nhibernate-validator nhibernate-burrow

我正在寻找在使用NHibernate Burrow来管理NH会话的经典ASP.net应用程序上配置NHibernate Validator的最佳方法。 如何让它自动注册interecptors?

1 个答案:

答案 0 :(得分: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;
 }

由于Burrow拦截了启动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();