我在 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(字符串 customTypeName,字符串数据源)
在某些时候,我希望将代码发送到“DEV_SCHEMA”之后,但这会导致代码失败。
架构名称来自连接字符串User Id
:
"Data Source=DBNAME;User id=DEV_SCHEMA;Password=pwd;Pooling=False;"
有什么我可以在 C# 方面的 Oracle 帮助我解决这个问题的吗?即,不知何故:
- 将架构名称作为属性参数传递
- 以我不需要使用架构的方式定义 Oracle 中的类型
作为进一步的信息,当我使用 ODP.NET 客户端版本 11.1.0.7 时会出现此问题。DLL 的 11.2 版本可以在属性中没有架构名称的情况下完美运行。
任何帮助将非常感激。