2009-07-08 5 views
0

Я не знаю ответа на этот вопрос.SubSonic Oracle и случай свойств

С MSSQLSERVER и MYSQL следующая конфигурация работает очень хорошо, но с Oracle не требуется.

С Oracle появляются как этот

Cargo с = новый Cargo(); 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> 

ответ

1

Valmir, Что определение вашего груза таблицы выглядеть? Я держу пари, что ваша ошибка исходит от Oracle и не SubSonic, если ваше определение выглядит что-то вроде этого

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

чем ваша собственность в дозвуковой не встретить, как ldCargo. Это связано с тем, что Oracle хранит все имена столбцов и имена таблиц в верхнем регистре. Вам нужно будет изменить ldCargo на ld_cargo, если вы хотите, чтобы он попал в SubSonic в качестве верблюжьего корпуса (SubSonic удалит «_» для вас)

+0

Привет runxc1, я создал еще одно поле в таблице как Descricao_Teste и набор конечно removeUnderscores = «истина» в web.config Таким образом, работа ..... я пытался создать столбцы таблицы как верблюд, но в оракуле всегда остаются в верхнем регистре. Знаете ли вы, как это решить? – Valmir

+0

вам не нужно устанавливать удаление подчеркивания = "true", поскольку оно является значением по умолчанию. Используя все значения по умолчанию, когда у меня есть столбец с именем c_test_info_id, SubSonic преобразует это в CTestInfoId –

0

Поскольку runxc1 говорит, что Oracle не учитывает регистр имен столбцов/таблиц , ваша конфигурация regexdictionaryreplace, я думаю, скрывает проблему для таблиц. Вы можете заставить оракул быть чувствительны к регистру в сценариях создания БД окружив таблицы/имена столбцов с цитатами, однако я считаю, что имеет собственные недостатки:

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.

+1

Как указывает Адам, вы можете изменить Oracle, чтобы он соблюдал случай, но все говорят мне, что он большой NONO и вызовет много других ошибок. –

+0

Да, спасибо Адаму. с кавычками в имени столбца работает ... в этом проекте я не могу изменить все столбцы, чтобы использовать «_», но в следующем, может быть, я изменил .... Еще раз спасибо за вашу помощь. – Valmir

Смежные вопросы