Fluent NHibernate と NHibernate Validator を連携させるのに苦労していますが、これを行う最善の方法に関するドキュメントがインターネット上にないようです。バリデーターと NHibernate を構成する方法を詳しく説明している Web サイトをいくつか見つけましたが、Fluent NHibernate については説明していません。Fluent NHibernate は適切なマッピングを備えた単なる NHibernate であることに気付きましたが、構成について頭を悩ませることはできません。
これは、セットアップに使用するコードですSessionFactory
。
public static void Initialise()
{
Configuration config = Fluently.Configure()
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c => c
.Server("")
.Database("")
.Username("")
.Password("")))
.Mappings(m => m.FluentMappings.AddFromAssemblyOf<Map>()
.Conventions.AddFromAssemblyOf<EnumConvention>())
.BuildConfiguration();
DataBindingInterceptor interceptor = new DataBindingInterceptor();
SessionFactory = config
.SetInterceptor(interceptor)
.BuildSessionFactory();
}
この質問から、バリデーターをセットアップするために次のようなメソッドを作成しようとしました。
private static void ConfigureValidator(Configuration config)
{
NHibernate.Validator.Cfg.Environment.SharedEngineProvider = new SharedValidatorProvider();
var nhvc = new NHVConfiguration();
nhvc.Properties[NHibernate.Validator.Cfg.Environment.ApplyToDDL] = "true";
nhvc.Properties[NHibernate.Validator.Cfg.Environment.AutoregisterListeners] = "true";
nhvc.Properties[NHibernate.Validator.Cfg.Environment.ValidatorMode] = "UseAttribute";
var ve = new ValidatorEngine();
ve.Configure(nhvc);
ValidatorInitializer.Initialize(config, ve);
}
SharedValidatorProvider
ただし、との名前空間を見つけようとしてエラーが発生しましたNHVConfiguration
。プロジェクトで参照されているCastle.Core、FluentNHibernate、NHibernate、NHibernate.ByteCode.Castle、NHibernate.Validator、およびNHibernate.Validator.Specific DLLがあり、次using
のものがあります。
using NHibernate.Validator.Engine;
using NHibernate.Validator.Event;
using NHibernate.Validator.Cfg;
using NHibernate.Cfg;
using NHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
Fluent NHibernate と NHibernate Validator がうまく連携できるよう、ご協力をお願いします。うまくいけば、人々が将来これをやろうとするとき、これが決定的なソースになるでしょう!