У меня есть тип, объявленный в базе данных Oracle:
CREATE OR REPLACE TYPE t_project_code_changes AS TABLE OF obj_project_code_change;
Я сопоставляюсь с этим типом в C # примерно так:
[OracleCustomTypeMapping("DEV_SCHEMA.OBJ_PROJECT_CODE_CHANGE")]
class ProjectCodeChangeFactory : TypeFactoryTemplate<ProjectCodeChangeDTO>
{
//code
}
Приведенный выше код работает без ошибок, однако, если яудаляет имя схемы 'DEV_SCHEMA' из атрибута, это приводит к ошибке:
[OracleCustomTypeMapping("OBJ_PROJECT_CODE_CHANGE")]
Генерирует следующую ошибку:
Необработанное исключение: System.InvalidOperationException: Пользовательское сопоставление типов для ProjectCodeChangeDTO'не указан или является действительным.
в Oracle.DataAccess.Types.OracleUdt.GetUdtName (String customTypeName, String dataSource)
В какой-то момент я захочу отправить код после'DEV_SCHEMA ', но это приведет к сбою кода.
Имя схемы происходит из строки соединения User Id
:
"Data Source=DBNAME;User id=DEV_SCHEMA;Password=pwd;Pooling=False;"
Могу ли я что-нибудь сделать на стороне Oracle C #, чтобы помочь мне в этом.Т.е. как-то:
- Передать имя схемы в качестве параметра атрибута
- Определить тип в Oracle так, чтобы мне не нужно было использовать схему
В качестве дополнительной информации эта проблема возникает, когда я пользуюсь клиентом ODP.NET версии 11.1.0.7.Версия DLL 11.2 прекрасно работает без имени схемы в атрибуте.
Любая помощь будет принята с благодарностью.