質問

NHibernate Burrowを使用してNHセッションを管理する従来のASP.netアプリでNHibernate Validatorを構成する最適な方法を探しています。
インターセプターを自動的に登録するにはどうすればよいですか?

役に立ちましたか?

解決

OK、これが私がやったことです。
まず、global.asax Application_StartイベントでSharedEngineProviderを設定します。

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

BurrowがページのリクエストをインターセプトしてNHセッションを開始するため、バリデーターを現在のNHセッションに統合するためにPreInitイベントをフックすることにしました。カスタムベースページがあるので(良い方法だと思います)、このメソッドを追加しました:

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

これまでのところ、問題なく動作しているようです。

使用しているバリデータエンジンへの参照を取得するには:

validatorEngine = Environment.SharedEngineProvider.GetEngine();
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top