2014-09-01 2 views
1

에 대한 명명 전략 (자동 생성 된 ID 값에 대한 예) 기본 시퀀스 이름을 설정 OracleOrmLiteDialectProvider MODELNAME하기 + "_"+ fieldName에 + "_GEN"OracleOrmLiteDialectProvider.Sequence에서Servicestack.Ormlite.Oracle.OracleOrmLiteDialectProvider : 시퀀스

발췌 :

var seqName = NamingStrategy.ApplyNameRestrictions(modelName + "_" + fieldName + "_GEN"); 

다른 패턴 ("SEQ_AUTO_")을 사용하는 레거시 시스템 (테이블 및 해당 시퀀스가 ​​이미 있음)을 다루고 있습니다.

시퀀스 이름 생성에 영향을 미치는 쉬운 방법이 있습니까? 현재 각 DTO에서 시퀀스 속성을 사용하고 있습니다. (불행히도 OracleOrmLiteDialectProvider.Sequence 메소드는 private입니다.)

답변

1

이제 시퀀스 이름 전략을 INamingStrategy in this commit으로 옮겼습니다. 당신이 당신의 오라클 제공자에 사용할 등록 할 수 있습니다

public class MyOracleNamingStrategy : OracleNamingStrategy 
{ 
    public override string GetSequenceName(string table, string field) 
    { 
     var seqName = ApplyNameRestrictions("SEQ_AUTO_" + table + "_" + field); 
     return seqName; 
    } 
} 

:

OrmLiteConfig.DialectProvider = new OracleOrmLiteDialectProvider { 
    NamingStrategy = new MyOracleNamingStrategy() 
}; 

에서 사용할 수

이 이제 예를 들어 시퀀스에 대한 사용자 지정 명명 전략을 사용할 수 있습니다 v4.0.31 +이 현재 available on MyGet입니다.

+0

와우, 빨리 ... 고마워요! – celper