문제
을 내 스키마하지 유효성 검사에 표현된 내 도메인을 개체입니다.나는[NotNull]특성 및 ValidatioDef 에 제공 하지만 열 여전히 표현했으로 널 스키마로 수출합니다.Im sure its config 문제이지만,확실하지 않다 곳.일부 배선 비행 갔다.여기에는 나의 구성 및 gerneration 코드입니다.
[Test]
public void GenerateSchemaWithValidation()
{
var nhvConfiguration = new FluentConfiguration();
nhvConfiguration
.SetDefaultValidatorMode(ValidatorMode.UseExternal)
.Register(Assembly.Load("MyDomainAssembly")
.ValidationDefinitions())
.IntegrateWithNHibernate
.ApplyingDDLConstraints()
.And
.RegisteringListeners();
var nhibernateConfig = new Configuration().Configure();
var validatorEngine = new ValidatorEngine();
validatorEngine.Configure(nhvConfiguration);
nhibernateConfig.Initialize(validatorEngine);
ConfigureDatabaseAndMappings()
.ExposeConfiguration(cfg => new SchemaExport(cfg).Create(true, true))
.BuildSessionFactory();
}
protected static FluentConfiguration ConfigureDatabaseAndMappings()
{
return Fluently.Configure()
.Database(
MsSqlConfiguration.MsSql2005.ConnectionString(c => c.FromConnectionStringWithKey("MyDb"))
.ShowSql())
.Mappings(m =>
m.FluentMappings.AddFromAssemblyOf<MediaDescriptionMap>()
.Conventions.AddFromAssemblyOf<WellNamedForeignKeyColumnConvention>());
}
해결책
예를 수행 할 수 있습니다.가 유창하게 말하 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 의 블로그에 대한 몇 가지 좋은 토론과 예)
다른 팁
NHibernate 검사기를 변경하지 않 매핑을 만들어진,그것은 단지 확인하는 엔티티에 대한 규정을 저장하기 전에.당신은 또한에서 지정 매핑을 원하지 않는 열 것 입니다.
Map(x => x.Property)
.Not.Nullable();
만약 당신이 하고 있는 대한의 속성,그것을 찾고 가치가있을 수도 있습니다로 사용 컨;특히 PropertyAttributeConvention
에서 잘 작동할 것입니다.
제휴하지 않습니다 StackOverflow