配置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

我正在努力让流利的NHibernate和NHibernate验证器一起工作,而在互联网上似乎缺少关于最佳方法的文档。我发现了一些网站,详细介绍了如何配置验证器和NHibernate,但不是流利的NHibernate。我意识到Fluent NHibernate只是具有良好映射的NHibernate,但我无法完全理解配置

这是我用来设置会话工厂的代码:

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