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?

¿Fue útil?

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();
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top