Frage

Ich bin auf der Suche nach dem besten Weg, um den NHiberNate -Validator in einer klassischen ASP.NET -App zu konfigurieren, in der NhiberNate Burrow zur Verwaltung von NH -Sitzungen verwendet wird.
Wie kann ich es automatisch registrieren, um die Interzptoren zu registrieren?

War es hilfreich?

Lösung

Ok, hier ist was ich am Ende getan habe.
Zuerst habe ich einen SharedEngineProvider im Ereignis global.asax application_start eingerichtet.

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;
 }

Da Burrow Anfragen nach Seiten zum Starten der NH -Sitzung ausgeht, entschied ich mich, das Preinit -Ereignis zu hängen, um den Validator in die aktuelle NH -Sitzung zu integrieren. Ich habe eine benutzerdefinierte Basisseite (eine gute Praxis, denke ich), also habe ich diese Methode dort hinzugefügt:

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

Bisher scheint es gut zu funktionieren.

Um einen Verweis auf die Validator -Engine zu erhalten, die ich verwende:

validatorEngine = Environment.SharedEngineProvider.GetEngine();
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top