C#类和Oracle映射参数
我在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'的自定义类型映射
未指定或有效。
at Oracle.DataAccess.Types.OracleUdt.GetUdtName(String
customTypeName,String dataSource)
在某些时候,我会想要将代码发送到'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版本完美地工作,没有属性中的模式名称。
任何帮助将非常感激。
没有找到相关结果
已邀请:
2 个回复
撵穆
属性方法, 我认为最好的解决方案是通过配置文件设置自定义类型映射。
泻伴墓荒
然后你可以像这样使用它: