문제

나는 S#ARP 아키텍처의 일환으로 FluentNHibernate를 사용해 왔습니다. 아래는 예제 매핑입니다.

public class EventBaseMap : ClassMap<EventBase>
{
    public EventBaseMap()
    {
        WithTable("Event_Header");
        //NotLazyLoaded(); 

        Id(x => x.Id).WithUnsavedValue(-1).GeneratedBy.Native();

        Map(x => x.Name).WithLengthOf(50).Not.Nullable();
        Map(x => x.Description).WithLengthOf(255);
        Map(x => x.Rating);
        Map(x => x.Price);
        Map(x => x.PhoneNumber).WithLengthOf(20).Not.Nullable();
        Map(x => x.EmailAddress);
        Map(x => x.Website);
        Map(x => x.State).Not.Nullable().CustomSqlTypeIs("INT");

        Component(x => x.Ages, m =>
         {
             m.Map(x => x.From).TheColumnNameIs("AgeFrom");
             m.Map(x => x.To).TheColumnNameIs("AgeTo");
         });

        HasMany(x => x.Calendar).AsBag();

        HasManyToMany(x => x.Tags)
            .WithTableName("Event_Tags")
            .WithParentKeyColumn("EventId")
            .WithChildKeyColumn("TagId").AsBag();
    }
}

그런 다음 nhibernate 스키마 생성을 사용하여 DDL을 파일로 출력합니다.

FileInfo t = new FileInfo(Server.MapPath("~/bin/MyDDL.sql"));
        StreamWriter writer = t.CreateText();

        new SchemaExport(cfg).Execute(true, false, false, true, NHibernateSession.Current.Connection, writer);

여태까지는 그런대로 잘됐다. 그러나이 테이블의 생성 된 DDL은 일치하지 않으며 실제로 오류가 포함되어 있습니다.

create table Event_Header (
   Id INT IDENTITY NOT NULL,
   EmailAddress NVARCHAR(255) null,
   PhoneNumber NVARCHAR(255) null,
   State string null,
   Website NVARCHAR(255) null,
   Description NVARCHAR(255) null,
   Name NVARCHAR(255) null,
   Price DECIMAL(19,5) null,
   Rating INT null,
   AgeTo INT null,
   AgeFrom INT null,
   primary key (Id)
)
  • 열거 상태는 int를 사용하도록 강요하려고했지만 문자열로 표시됩니다.
  • 전화 번호 길이는 매핑과 일치하지 않습니다.

나는 이것을 어떻게 디버깅하는지 궁금했다. 이것은 fluentnh의 매핑에 문제가 있습니까? 아니면 스키마 생성기의 문제입니까? 생성 된 XML을 출력 할 수 있다면 확인할 수 있습니다. 누구 든지이 작업을 수행하는 방법을 아는 사람이 있습니까?

감사,

도움이 되었습니까?

해결책

유창한 구성 XML을 내보낼 수 있습니다.

#arch 사본, 특히 유창한 nhibernate의 개정판을 알고 있습니까?

열거는 유형이 유형을 사용하는 대신 열거를 지정 해야하는 규칙에 의해 상환됩니다. CustomSqlType 만 사용해보십시오 CustomTypeIs<int>().

열의 길이는 버그처럼 들리지만 여전히 문제인지 여부는 실행중인 버전에 달려 있습니다.

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