Да, вы можете. Вы должны сказать Fluent сказать NHibernate через ExposeConfiguration:
Это работает.
[Test]
public void DoGenerateSchema()
{
ConfigureDatabaseAndMappings()
.ExposeConfiguration(ExportSchema)
.BuildSessionFactory();
}
private static void ExportSchema(Configuration cfg)
{
var nhvConfiguration = new FluentConfiguration();
nhvConfiguration
.SetDefaultValidatorMode(ValidatorMode.UseAttribute)
.Register(Assembly.Load("MyDomainAssembly")
.ValidationDefinitions())
.IntegrateWithNHibernate
.ApplyingDDLConstraints()
.And
.RegisteringListeners();
var validatorEngine = new ValidatorEngine();
validatorEngine.Configure(nhvConfiguration);
cfg.Initialize(validatorEngine);
new SchemaExport(cfg).Create(true, true);
}
и для тех, кто интересуется, как я, я знаю, вижу, что ValidatorMode.UseAttribute поднимает только, например, [NotNull], а ValidatorMode.UseExternal получает ValidationDefs
Все это так, что бизнес-правила инкапсулируются в доменном / бизнес-уровне, а не в сопоставлениях базы данных. (проверьте блог HunabKu для хороших обсуждений и примеров)