Configuración de NHibernate Validator en una aplicación ASP.net de Burrow
-
05-07-2019 - |
Pregunta
Estoy buscando la mejor manera de configurar NHibernate Validator en una aplicación clásica de ASP.net que usa NHibernate Burrow para administrar las sesiones de NH.
¿Cómo puedo hacer que se registren automáticamente los interectores?
Solución
Bien, esto es lo que terminé haciendo.
Primero configuro un SharedEngineProvider en el evento global.asax Application_Start.
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;
}
Dado que Burrow intercepta solicitudes de páginas para iniciar la sesión NH, decidí conectar el evento PreInit para integrar el validador con la sesión NH actual. Tengo una página base personalizada (una buena práctica, creo), así que agregué este método allí:
protected void Page_PreInit(object sender, EventArgs args)
{
Configuration cfg = new BurrowFramework().BurrowEnvironment.GetNHConfig("PersistenceUnit1");
ValidatorInitializer.Initialize(cfg);
}
Hasta ahora parece estar funcionando bien.
Para obtener una referencia al motor del validador que estoy usando:
validatorEngine = Environment.SharedEngineProvider.GetEngine();