【问题标题】:Servicestack.Ormlite.Oracle.OracleOrmLiteDialectProvider: Naming strategy for sequencesServicestack.Ormlite.Oracle.OracleOrmLiteDialectProvider:序列的命名策略
【发布时间】:2014-09-01 09:36:21
【问题描述】:

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

摘自 OracleOrmLiteDialectProvider.Sequence:

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

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

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

【问题讨论】:

    标签: oracle servicestack ormlite-servicestack


    【解决方案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 Provider 中使用:

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

    这可以从 v4.0.31+ 获得,现在是available on MyGet

    【讨论】:

    • 哇,你真快...非常感谢!!
    猜你喜欢
    • 1970-01-01
    • 2020-03-18
    • 2023-03-21
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多