Domanda

Sto cercando il modo migliore per configurare NHibernate Validator su un'app ASP.net classica che utilizza NHibernate Burrow per gestire le sessioni NH.
Come ottengo per registrare automaticamente gli interpreti?

È stato utile?

Soluzione

OK, ecco cosa ho finito per fare.
Per prima cosa ho impostato un SharedEngineProvider nell'evento 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;
 }

Poiché Burrow intercetta le richieste di pagine per avviare la sessione NH, ho deciso di agganciare l'evento PreInit per integrare il validatore con l'attuale sessione NH. Ho una pagina di base personalizzata (una buona pratica credo) quindi ho aggiunto questo metodo lì:

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

Finora sembra funzionare bene.

Per ottenere un riferimento al motore di validazione che sto usando:

validatorEngine = Environment.SharedEngineProvider.GetEngine();
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top