Servicestack.Ormlite.Oracle.OracleOrmLiteDialectProvider:序列的命名策略

时间:2014-09-01 09:36:22

标签: oracle servicestack ormlite-servicestack

OracleOrmLiteDialectProvider将默认序列名称(例如自动生成的id值)设置为modelName +" _" + fieldName +" _GEN":

摘自OracleOrmLiteDialectProvider.Sequence:

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

我正在处理使用不同模式的遗留系统(已存在的表和相应的序列):" SEQ_AUTO _"。

有没有简单的方法来影响序列名称生成?我目前正在每个DTO上使用sequence属性。 (不幸的是,OracleOrmLiteDialectProvider.Sequence方法是私有的。)

1 个答案:

答案 0 :(得分: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;
    }
}

您可以通过以下方式注册在Oracle提供商中使用

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

可从 v4.0.31 + 获取,现在为available on MyGet