Question

Je recherche le meilleur moyen de configurer NHibernate Validator sur une application ASP.net classique utilisant NHibernate Burrow pour gérer les sessions NH.
Comment l'obtenir pour enregistrer les interecpteurs automatiquement?

Était-ce utile?

La solution

OK, voici ce que j'ai fini par faire.
J'ai tout d'abord configuré un fournisseur SharedEngine dans l'événement 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;
 }

Etant donné que Burrow intercepte les demandes de pages pour démarrer la session NH, j'ai décidé de connecter l'événement PreInit afin d'intégrer le validateur à la session NH en cours. J'ai une page de base personnalisée (une bonne pratique, je pense), alors j'ai ajouté cette méthode:

protected void Page_PreInit(object sender, EventArgs args)
{
    Configuration cfg = new BurrowFramework().BurrowEnvironment.GetNHConfig("PersistenceUnit1");
    ValidatorInitializer.Initialize(cfg);
}

Jusqu'à présent, cela semble bien fonctionner.

Pour obtenir une référence au moteur de validation que j'utilise:

validatorEngine = Environment.SharedEngineProvider.GetEngine();
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top