Pergunta

Estou procurando a melhor maneira de configurar o Nibernate Validator em um aplicativo ASP.NET clássico que está usando o Nibernate Burrow para gerenciar sessões do NH.
Como faço para registrar os intercptors automaticamente?

Foi útil?

Solução

Ok, aqui está o que eu acabei fazendo.
Primeiro, configurei um SharedEngineProvider no 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;
 }

Como a Burrow intercepta solicitações de páginas para iniciar a sessão do NH, decidi conectar o evento pré -initador para integrar o validador à sessão atual do NH. Eu tenho uma página base personalizada (uma boa prática, eu acho), então adicionei esse método lá:

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

Até agora, parece estar funcionando bem.

Para obter uma referência ao mecanismo do validador que estou usando:

validatorEngine = Environment.SharedEngineProvider.GetEngine();
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top