使用实体框架与现有的ORACLE数据库.Visual Studio 2012和废弃的ODP.网络驱动程序

本文关键字:2012 Studio 废弃 驱动程序 网络 ODP Visual ORACLE 框架 实体 数据库 | 更新日期: 2023-09-27 18:11:29

我做了足够的研究,但还是找不到答案。

我有一个Oracle DB,我正在使用我的ADO。NET,它工作得很好。然而,我想使用它与实体框架6。由于DB已经到位,我不打算做"代码优先"的方法。以下是我遇到的问题。在下结论之前请记住它们

  • 我有VS 2012与旧ODP驱动程序。VS要求我升级。斜面
  • 我不能使用EDM生成图表和代码,因为我没有安装最新的ODAC,我没有得到连接到Oracle DB的选项
  • 如果我尝试使用与EF相同的连接字符串,这与ADO工作良好。然后我得到以下错误

ORA-12154: TNS:无法解析指定的连接标识符

注意我使用LDAP连接到Oracle数据库。

我也尝试生成一个空的EDM,并添加了一个新的连接字符串如下,然后我得到了一个不同的错误。

<add name="EF" connectionString="metadata=res://*/Model1.csdl
                                |res://*/Model1.ssdl
                                |res://*/Model1.msl;
                                provider=Oracle.ManagedDataAccess.Client;
                                provider connection string=&quot;data source=MY_SERVICE;password=MY_PASSWORD;persist security info=True;user id=MY_USERID&quot;"
                                providerName="System.Data.EntityClient" />

实体类型不是当前模型的一部分上下文。

我的问题。

  • 是否有解决上述问题的方法?
  • 有一种方法来映射Oracle表,存储过程,函数等手动?

我知道上面没有多大意义,但这些是我的约束条件。我试图避免长/旧的ADO。NET代码。如果做不到,也没关系。

提前感谢您的输入

使用实体框架与现有的ORACLE数据库.Visual Studio 2012和废弃的ODP.网络驱动程序

您的问题不太清楚,因为像"ODAC"或"ADO"这样的术语。

ODAC是一个软件包,它包含几个提供程序和驱动程序。请清楚地说明供应商(如OraOLEDB.OracleMSDAORA)和参考(如Oracle.DataAccess.ClientSystem.Data.OracleClient),并告诉我们哪个在工作或不工作。

不管怎样,看起来你的ODP有问题。. NET托管提供程序(Oracle.ManagedDataAccess.Client),所以专注于那个。显然,它没有找到sqlnet.oraldap.ora文件。

检查以下设置是否指向正确的文件位置:

    . net配置文件中<oracle.manageddataaccess.client>节下dataSources节中的数据源别名。. net配置文件中TNS_ADMIN指定位置的tnsnames.ora文件中的
  1. 数据源别名。位置可以包含绝对或相对目录路径。
  2. tnsnames.ora文件中的数据源别名与.exe位于同一目录。

注意,与其他提供程序ODP不同。不读取任何注册表设置,也不读取环境变量。

有一个bug报告ODP。. NET托管提供程序不能从LDAP解析别名,请参阅此解决方案:ODP。. NET托管库可以解析别名,但32位库可以