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版本完美地工作,没有属性中的模式名称。 任何帮助将非常感激。     
已邀请:
如果您不需要坚持
OracleCustomTypeMapping
属性方法, 我认为最好的解决方案是通过配置文件设置自定义类型映射。     
我过去使用以下方法处理过这个问题:
internal static class OracleConfig
{
#if SHIPPING
    internal const string SCHEMA = @"REL.";
#else
    internal const string SCHEMA = @"DEV.";
#endif
}
然后你可以像这样使用它:
[OracleCustomTypeMapping(OracleConfig.SCHEMA + "OBJ_PROJECT_CODE_CHANGE")]
    

要回复问题请先登录注册