2009-09-29 2 views
1

Hibernate가 FluentNHibernate를 사용하여 열 이름을 생성 할 때 어떻게 키워드 충돌을 피할 수 있습니까?NHibernate 명명 규칙 - 키워드 충돌 제거

NHibernate가 이것을 생성했으며 "Key"는 충돌입니다.

create table Setting (
     Key NVARCHAR(MAX) not null, 
     Value NVARCHAR(MAX) null, 
     primary key (Key) 
) 

답변

0

이 시도 :

create table Setting (
     [Key] NVARCHAR(MAX) not null, 
     Value NVARCHAR(MAX) null, 
     primary key (Key) 
) 

SQL Server를 사용하면 텍스트 주위에 대괄호를 넣어 예약어를 탈출 할 수 있습니다.

+0

어떻게 NHiberate가 그렇게 말할까요 여기

는 문제 Key 속성과 실체? –

+0

테이블, 필드의 이름을 'Setting','Key'라고 부릅니다. 유창하게, 당신은 그것을하기위한 컨벤션을 원할 수 있습니다. – queen3

+0

@ queen3 어떻게해야합니까? –

0

비슷한 문제가있었습니다. 해결 방법은 FluentNHibernate의 Column 속성 부분을 사용하여 키 속성의 열 이름을 대괄호로 묶는 것입니다. 여기

public class MyEntity 
    { 
     public virtual int Id { get; set; } 
     public virtual string Key { get; set; } 
    } 

이 매핑에 열 이름을 지정하는 방법은 다음과 같습니다 :

public class MyEntityMap : ClassMap<MyEntity> 
    { 
     public MyEntityMap() 
     { 
      Id(x => x.Id).GeneratedBy.Assigned(); 

      // Note the brackets around Key 
      Map(x => x.Key).Column("[Key]").Not.Nullable(); 
     } 
    }