SubSonic Oracle和属性案例

时间:2009-07-08 01:50:18

标签: subsonic

我不知道这个问题的答案。

使用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>

2 个答案:

答案 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。