Настройка валидатора NHibernate в приложении Burrow ASP.net

Я ищу лучший способ настроить NHibernate Validator в классическом приложении ASP.net, которое использует NHibernate Burrow для управления сеансами NH.
Как заставить его автоматически регистрировать interecptors?

1 ответ

Решение

Хорошо, вот что я в итоге сделал.
Сначала я настроил SharedEngineProvider в событии application.Start global.asax.

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();
Другие вопросы по тегам