2009-07-08 7 views
0

Je ne connais pas la réponse à cette question. Avec MSSQLSERVER et MYSQL, la configuration suivante fonctionne très bien, mais pas avec Oracle.SubSonic Oracle et le cas des propriétés

Avec Oracle apparaissent comme ceci

Cargo c = new Cargo(); c.Icargo = 1;

Avec MSSQL MYSQL ET

c.IdCargo = 1;

Comment configurer la connexion avec Oracle pour apparaître "IdCargo" et non "Idcargo". ??

LA CONFIGURATION:

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

Répondre

1

Valmir, Qu'est-ce que la définition de votre look Table Cargo comme? Je parie que votre erreur provient d'Oracle et non SubSonic si votre définition ressemble à ceci

Create Table Cargo(
ldCargo Decimal(12,0)) 

Que votre propriété subsonique ne sera pas apparaître comme ldCargo. Cela est dû au fait qu'Oracle stocke tous les noms de colonnes et de tables en majuscules. Vous devriez changer ldCargo en ld_cargo si vous voulez qu'il apparaisse dans SubSonic sous forme de chameau (SubSonic supprimera le "_" pour vous)

+0

Salut runxc1, j'ai créé un autre champ dans la table comme Descricao_Teste et de jeu de cours removeUnderscores = « true » dans le web.config Ce travail de façon ..... J'ai essayé de créer les colonnes de table comme chameau mais en oracle reste toujours en majuscule. Connaissez-vous une autre façon de résoudre ce problème? – Valmir

+0

vous ne devriez pas avoir besoin de définir remove underscores = "true" car c'est la valeur par défaut. En utilisant toutes les valeurs par défaut quand j'ai une colonne nommée c_test_info_id SubSonic convertira ceci en CTestInfoId –

0

Comme dit runxc1, Oracle ne respecte pas le cas des noms de colonne/table , votre config regexdictionaryreplace est, j'imagine, cacher le problème pour les tables. Vous pouvez forcer oracle pour être sensible à la casse dans vos scripts de création db par la table autour/noms de colonnes avec des citations mais je crois que a ses propres inconvénients:

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

Puisque vous rencontrez le même problème avec MySql Je vous suggère de passer à l'aide de traits de soulignement (encore une fois comme dit runxc1) pour vos conventions de nommage db table/colonne, alors vous pouvez supprimer complètement le regexdictionaryreplace.

+1

Comme Adam le fait remarquer, vous pouvez changer Oracle pour qu'il respecte le cas mais tout le monde me dit que c'est un gros NONO et causera beaucoup d'autres erreurs. –

+0

Oui, merci Adam. avec des citations dans le nom de la colonne fonctionne ... dans ce projet je ne peux pas changer toutes les colonnes pour utiliser "_", mais dans le prochain peut-être je change .... Merci beaucoup pour votre aide à nouveau. – Valmir

Questions connexes