我正在努力让 Fluent NHibernate 和 NHibernate Validator 一起工作,并且互联网上似乎缺乏关于最佳方式的文档。我发现一些网站详细介绍了如何配置验证器和 NHibernate,但不包括 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
and的命名空间时遇到了错误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 一起愉快地工作。希望将来人们尝试这样做时,这将成为最终的来源!