Настройка валидатора NHibernate в приложении Burrow ASP.net
-
05-07-2019 - |
Вопрос
Я ищу лучший способ настройки 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();
Не связан с StackOverflow