OracleOrmLiteDialectProvider将默认序列名称(例如自动生成的id值)设置为modelName +" _" + fieldName +" _GEN":
摘自OracleOrmLiteDialectProvider.Sequence:
var seqName = NamingStrategy.ApplyNameRestrictions(modelName + "_" + fieldName + "_GEN");
我正在处理使用不同模式的遗留系统(已存在的表和相应的序列):" SEQ_AUTO _"。
有没有简单的方法来影响序列名称生成?我目前正在每个DTO上使用sequence属性。 (不幸的是,OracleOrmLiteDialectProvider.Sequence方法是私有的。)
答案 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。