Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将实体框架与现有ORACLE数据库一起使用。Visual Studio 2012和不推荐使用的ODP.NET驱动程序_C#_Oracle_Entity Framework_Ldap_Odp.net - Fatal编程技术网

C# 将实体框架与现有ORACLE数据库一起使用。Visual Studio 2012和不推荐使用的ODP.NET驱动程序

C# 将实体框架与现有ORACLE数据库一起使用。Visual Studio 2012和不推荐使用的ODP.NET驱动程序,c#,oracle,entity-framework,ldap,odp.net,C#,Oracle,Entity Framework,Ldap,Odp.net,我做了足够的研究,但没有找到答案 我有一个Oracle数据库,我正在使用我的ADO.NET,它工作得很好。但是,我想将它与EntityFramework6一起使用。由于DB已经就位,所以我不打算采用“代码优先”的方法。 下面是我遇到的问题在下结论之前,请记住这些问题。 我有VS2012和旧的ODP驱动程序。VS要求我升级。行话 我不能使用EDM生成图表和代码,因为我没有安装最新的ODAC,也没有连接到Oracle DB的选项 如果我尝试使用与EF相同的连接字符串,而EF在ADO.NET中运行良

我做了足够的研究,但没有找到答案

我有一个Oracle数据库,我正在使用我的ADO.NET,它工作得很好。但是,我想将它与EntityFramework6一起使用。由于DB已经就位,所以我不打算采用“代码优先”的方法。 下面是我遇到的问题在下结论之前,请记住这些问题。

  • 我有VS2012和旧的ODP驱动程序。VS要求我升级。行话
  • 我不能使用EDM生成图表和代码,因为我没有安装最新的ODAC,也没有连接到Oracle DB的选项
  • 如果我尝试使用与EF相同的连接字符串,而EF在ADO.NET中运行良好,则会出现以下错误
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代码。如果做不到,也可以


提前感谢您的输入。

您的问题不太清楚,因为像“ODAC”或“ADO.NET”这样的术语非常模糊

ODAC是一个包含多个提供者和驱动程序的软件包。请明确说明提供者(例如
OraOLEDB.Oracle
MSDAORA
)和参考资料(例如
Oracle.DataAccess.Client
System.Data.OracleClient
),并告诉我们哪一个正在工作或不工作

无论如何,看起来您在ODP.NET托管提供程序(
Oracle.ManagedDataAccess.Client
)方面有问题,所以请关注这个问题。显然,它找不到
sqlnet.ora
ldap.ora
文件

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

  • .NET配置文件中
    部分下
    数据源
    部分中的数据源别名
  • tnsnames.ora
    文件中的数据源别名,位于.NET配置文件中的
    TNS_ADMIN
    指定的位置。位置可以由绝对或相对目录路径组成
  • tnsnames.ora
    文件中的数据源别名与
    .exe
    位于同一目录中
  • 注意,与其他提供程序不同,ODP.NET托管提供程序不读取任何注册表设置,也不读取环境变量


    有一个问题是ODP.NET托管提供程序无法从LDAP解析别名,请参阅此解决方法:

    感谢您的回复。我知道ODAC和ADO.NET是什么。如果你再看看我的问题,你会注意到我在连接ADO.NET时没有问题,但我想使用EF6。另外,我使用LDAP,因此tnsnames.ora与讨论无关。已经说过,我能够连接到数据库。然而,在这一点上,我不知道如何告诉EF6框架我想使用数据库优先模型(而不具备使用EDM的能力)。我也在DB中看到了迁移表,所以我相信它首先使用的是代码。再次感谢您的输入。实际上,规则应该更准确地说“数据源别名,分别是
    sqlnet.ora
    tnsnames.ora
    ldap.ora
    文件中的引用…”