配置Fluent NHibernate和NHibernate验证器
我正在努力让流利的NHibernate和NHibernate验证器一起工作,而在互联网上似乎缺少关于最佳方法的文档。我发现了一些网站,详细介绍了如何配置验证器和NHibernate,但不是流利的NHibernate。我意识到Fluent NHibernate只是具有良好映射的NHibernate,但我无法完全理解配置 这是我用来设置会话工厂的代码:配置Fluent NHibernate和NHibernate验证器,nhibernate,validation,configuration,fluent-nhibernate,nhibernate-validator,Nhibernate,Validation,Configuration,Fluent Nhibernate,Nhibernate Validator,我正在努力让流利的NHibernate和NHibernate验证器一起工作,而在互联网上似乎缺少关于最佳方法的文档。我发现了一些网站,详细介绍了如何配置验证器和NHibernate,但不是流利的NHibernate。我意识到Fluent NHibernate只是具有良好映射的NHibernate,但我无法完全理解配置 这是我用来设置会话工厂的代码: public static void Initialise() { Configuration config = Fluently.Con
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();
}
但是,我在尝试查找SharedValidatorProvider
和NHVConfiguration
的命名空间时出错。我在项目中引用了Castle.Core、FluentNHibernate、NHibernate、NHibernate.ByteCode.Castle、NHibernate.Validator和NHibernate.Validator.Specific DLL,并使用了以下:
using NHibernate.Validator.Engine;
using NHibernate.Validator.Event;
using NHibernate.Validator.Cfg;
using NHibernate.Cfg;
using NHibernate;
using FluentNHibernate.Cfg;
using FluentNHibernate.Cfg.Db;
我非常感谢您的帮助,让流利的NHibernate和NHibernate验证器愉快地一起工作。希望这将成为最终的来源,当人们试图在未来这样做 我认为您需要NHibernateSharedEngineProvider
,而不SharedValidatorProvider
。要使用NHibernateSharedEngineProvider
,您需要使用以下工具:
using NHibernate.Validator.Event;
NHVConfiguration
是您所指帖子中的一个变量,而不是一个类型。我认为你需要更仔细地看那篇文章
也只是一张便条。如果您在查找类型时遇到困难,visual studio中的对象浏览器是您的朋友。它能够搜索项目中包含的所有程序集
编辑:
下面是我目前正在做的,修改了上面的内容,但NHV的配置非常流畅:
public static void Initialise()
{
//Read the configuration from hibernate.xml.cfg or app.config
private static NHibernate.Cfg.Configuration normalConfig = new NHibernate.Cfg.Configuration().Configure();
ConfigureNhibernateValidator(normalConfig);
Configuration config = Fluently.Configure(normalConfig)
.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 ConfigureNhibernateValidator(NHibernate.Cfg.Configuration config)
{
var provider = new NHibernateSharedEngineProvider();
NHibernate.Validator.Cfg.Environment.SharedEngineProvider = provider;
var nhvConfiguration = new NHibernate.Validator.Cfg.Loquacious.FluentConfiguration();
nhvConfiguration
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("Namespace.To.Business.Objects")
.ValidationDefinitions())
.IntegrateWithNHibernate
.ApplyingDDLConstraints()
.RegisteringListeners();
ValidatorEngine validatorEngine = NHibernate.Validator.Cfg.Environment.SharedEngineProvider.GetEngine();
validatorEngine.Configure(nhvConfiguration);
ValidatorInitializer.Initialize(config, validatorEngine);
}
publicstaticvoidinitialise()
{
//从hibernate.xml.cfg或app.config读取配置
私有静态NHibernate.Cfg.Configuration normalConfig=new NHibernate.Cfg.Configuration().Configure();
ConfigureNhibernateValidator(normalConfig);
Configuration config=fluntly.Configure(normalConfig)
.Database(MsSqlConfiguration.MsSql2008.ConnectionString(c=>c
.Server(“”)
.数据库(“”)
.Username(“”)
.密码(“”))
.Mappings(m=>m.FluentMappings.AddFromAssemblyOf())
.Conventions.AddFromAssemblyOf())
.BuildConfiguration();
DataBindingInterceptor拦截器=新的DataBindingInterceptor();
SessionFactory=config
.SetInterceptor(拦截器)
.BuildSessionFactory();
}
专用静态无效配置NHibernateValidator(NHibernate.Cfg.Configuration配置)
{
var provider=新的NHibernateSharedEngineProvider();
NHibernate.Validator.Cfg.Environment.SharedEngineProvider=提供者;
var nhvConfiguration=new NHibernate.Validator.Cfg.Loquacious.FluentConfiguration();
NHV配置
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load(“Namespace.To.Business.Objects”)
.ValidationDefinitions())
.与纤维酸盐整合
.applyingddl约束条件()
.RegisteringListeners();
ValidatorEngine ValidatorEngine=NHibernate.Validator.Cfg.Environment.SharedEngineProvider.GetEngine();
validatorEngine.Configure(nhvConfiguration);
初始化(配置,验证器引擎);
}
非常感谢,看起来好多了!我没有的一个问题是,ValidationDefinitions
没有定义。我不太清楚这意味着什么,谷歌也没有提供任何帮助。你能给我指出正确的方向吗?它在下面的名称空间中:名称空间NHibernate.Validator.Cfg.LoquaciousBrilliant!非常感谢您的快速回复,现在一切都很好!
public static void Initialise()
{
//Read the configuration from hibernate.xml.cfg or app.config
private static NHibernate.Cfg.Configuration normalConfig = new NHibernate.Cfg.Configuration().Configure();
ConfigureNhibernateValidator(normalConfig);
Configuration config = Fluently.Configure(normalConfig)
.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 ConfigureNhibernateValidator(NHibernate.Cfg.Configuration config)
{
var provider = new NHibernateSharedEngineProvider();
NHibernate.Validator.Cfg.Environment.SharedEngineProvider = provider;
var nhvConfiguration = new NHibernate.Validator.Cfg.Loquacious.FluentConfiguration();
nhvConfiguration
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("Namespace.To.Business.Objects")
.ValidationDefinitions())
.IntegrateWithNHibernate
.ApplyingDDLConstraints()
.RegisteringListeners();
ValidatorEngine validatorEngine = NHibernate.Validator.Cfg.Environment.SharedEngineProvider.GetEngine();
validatorEngine.Configure(nhvConfiguration);
ValidatorInitializer.Initialize(config, validatorEngine);
}