Вопрос

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

Это было полезно?

Решение

Хорошо, вот что я в итоге сделал.
Сначала я настроил 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();
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top