我不知道这个问题的答案。
使用MSSQLSERVER和MYSQL,下一个配置运行得很好,但是没有Oracle。
Oracle看起来像这样
货物c =新货物(); c.Idcargo = 1;
使用MSSQL和MYSQL
c.IdCargo = 1;
如何配置与Oracle的连接以显示“IdCargo”而不是“Idcargo”。 ??
配置:
<providers>
<clear/>
<add name="oracle" type="SubSonic.oracleDataProvider, SubSonic"
connectionStringName="oracle"
fixDatabaseObjectCasing="true"
regexDictionaryReplace="Empresaendereco,EmpresaEndereco;Empresacontato,EmpresaContato;Franqueadoendereco,FranqueadoEndereco;Franqueadocontato,FranqueadoContato;Funcionarioacesso,FuncionarioAcesso;Funcionarioendereco,FuncionarioEndereco;Funcionariocontato,FuncionarioContato;Clienteendereco,ClienteEndereco;Clientecontato,ClienteContato;Clientehistorico,ClienteHistorico;Agendastatus,AgendaStatus;Historicostatus,HistoricoStatus"
generateRelatedTablesAsProperties="true"
fixPluralClassNames="false"
generatedNamespace="ModeloDados"
regexIgnoreCase="false"
removeUnderscores="false"
setPropertyDefaultsFromDatabase="true"
generateNullableProperties="true"
useExtendedProperties="true" useUtc="true"/>
</providers>
答案 0 :(得分:1)
Valmir,您的货物表的定义是什么样的?我打赌你的错误来自Oracle而不是SubSonic,如果你的定义看起来像这样
Create Table Cargo(
ldCargo Decimal(12,0) )
比你在亚音速下的财产不会像ldCargo那样。这是因为Oracle将所有列名和表名都存储为大写。你需要将ldCargo更改为ld_cargo如果你想在SubSonic中遇到驼峰案例(SubSonic会为你删除“_”)
答案 1 :(得分:0)
正如runxc1所说Oracle不尊重列/表名的情况,我想,你的regexdictionaryreplace配置隐藏了表的问题。 你可以通过用引号括起表/列名来强制oracle在你的数据库创建脚本中区分大小写但是我相信它有它自己的缺点:
http://www.dbforums.com/oracle/1005513-column-name-any-convention.html#post3705627 http://oracle.ittoolbox.com/groups/technical-functional/oracle-apps-l/column-name-case-771715
由于你遇到了与MySql相同的问题,我建议你转向使用下划线(再次使用runxc1说明)作为你的db表/列命名约定,然后你可以完全删除regexdictionaryreplace。