代码之家  ›  专栏  ›  技术社区  ›  Ariel Popovsky

在Burrow ASP.NET应用程序上配置nhibernate验证程序

  •  1
  • Ariel Popovsky  · 技术社区  · 15 年前

    我正在寻找在经典的ASP.NET应用程序上配置nhibernate验证程序的最佳方法,该应用程序使用nhibernate burrow管理nh会话。
    如何让它自动注册利益相关者?

    1 回复  |  直到 15 年前
        1
  •  2
  •   Ariel Popovsky    15 年前

    好吧,这就是我最后做的。
    首先,我在global.asax应用程序启动事件中设置了一个sharedingineprovider。

    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();
    
    推荐文章