Настройка валидатора 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();