2014-03-04 2 views
0

기본적으로 Fluent NHibernate 매핑이 응용 프로그램의 구성을 보유하기위한 하나의 레코드 만 보유하도록 제한하는 방법을 알아 내려고하고 있습니다.Fluent NHibernate의 단일 행 제한

class ConfigurationMap : ClassMap<Configuration> 
{ 
    public ConfigurationMap() 
    { 
     Id(x => x.Id).Column("configurationId").GeneratedBy.Identity(); 
     Map(x => x.DefaultLocation); 
     Map(x => x.DefaultPrinter); 
     Map(x => x.DefaultPrinterLabelAmount); 
     Map(x => x.DefaultCompanyName); 
     Map(x => x.FolderLocalPath); 
     Map(x => x.CompanyNameEnabled); 
     Map(x => x.TimestampLabelEnabled); 
     Map(x => x.CollectionFeeEnabled); 
    } 
} 

내 유스 케이스에 맞는이 답변을 본 적이 : https://stackoverflow.com/a/3967446/273162

는 기본적으로 나는 그것이처럼 작동하게하기 위해 유창함 NHibernate에 아날로그를 알아 내기 위해 노력하고있어 여기

문제의지도입니다 위의 링크의 대답.

면책 조항 : 이전에 외부 설정 파일을 사용해 봤지만 대신 모든 것을 데이터베이스에 보관하는 것이 더 낫고/간단하다고 결정했습니다.

답변

1

당신은 당신의 ClassMapCheckConstraint("configurationId = 1")를 추가하여 점검 제한 조건을 추가 할 수 있습니다

class ConfigurationMap : ClassMap<Configuration> 
{ 
    public ConfigurationMap() 
    { 
     Id(x => x.Id).Column("configurationId").GeneratedBy.Identity(); 

     // Other properties 

     CheckConstraint("configurationId = 1"); 
    } 
} 

이 다음과 같은 SQL 발생합니다 :

입니다
CREATE TABLE Configuration (
    configurationId INT IDENTITY NOT NULL, 
    PRIMARY KEY (configurationId) 
    CHECK (configurationId = 1) 
) 

대답에 꽤 유사한 https://stackoverflow.com/a/3967446/273162.

테이블에 행을 삽입하면 ID 열은 1이되고 제약 조건은 실패합니다.

+0

감사합니다. – Craig