NHセッションを管理するためにNHibernateBurrowを使用している従来のASP.netアプリでNHibernateValidatorを構成するための最良の方法を探しています。
インターセプターを自動的に登録するにはどうすればよいですか?
1 に答える
2
OK、これが私がやったことです。
まず、global.asaxApplication_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セッションを開始するページの要求をインターセプトするため、PreInitイベントをフックして、バリデーターを現在のNHセッションと統合することにしました。私はカスタムベースページを持っているので(私が思うに良い習慣です)、そこにこのメソッドを追加しました:
protected void Page_PreInit(object sender, EventArgs args)
{
Configuration cfg = new BurrowFramework().BurrowEnvironment.GetNHConfig("PersistenceUnit1");
ValidatorInitializer.Initialize(cfg);
}
これまでのところ、正常に動作しているようです。
私が使用しているバリデーターエンジンへの参照を取得するには:
validatorEngine = Environment.SharedEngineProvider.GetEngine();
于 2009-09-11T15:04:47.363 に答える