문제

을 내 스키마하지 유효성 검사에 표현된 내 도메인을 개체입니다.나는[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 에서 잘 작동할 것입니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top