c# - 如何使用 Entity Framework 和 Oracle Managed Data Access 连接到 Oracle 数据库?
问题描述
我想使用 Entity Framework 6.1.3 版连接到 Oracle 数据库。我正在使用Oracle Managed Data Acces
19.5.0 版中的 Nuget 包和Oracle Managed Data Access Entity Framework
19.3.0 版中的 Nuget 包。我也在使用 Visual Studio 2019。我想使用ADO .NET
VS 中的选项从数据库表中创建实体,但是当我尝试使用此选项并单击 时Code First from database option
,它没有显示与 oracle 数据库的任何连接。我有这样的 App.config 文件:
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name="entityFramework"
type="System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089"
requirePermission="false"/>
<section name="oracle.manageddataaccess.client"
type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</configSections>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.LocalDbConnectionFactory, EntityFramework">
<parameters>
<parameter value="v13.0"/>
</parameters>
</defaultConnectionFactory>
<providers>
<provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer"/>
<provider invariantName="Oracle.ManagedDataAccess.Client"
type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</providers>
</entityFramework>
<system.data>
<DbProviderFactories>
<remove invariant="Oracle.ManagedDataAccess.Client"/>
<add name="ODP.NET, Managed Driver" invariant="Oracle.ManagedDataAccess.Client" description="Oracle Data Provider for .NET, Managed Driver"
type="Oracle.ManagedDataAccess.Client.OracleClientFactory, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342"/>
</DbProviderFactories>
</system.data>
<runtime>
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
<dependentAssembly>
<publisherPolicy apply="no"/>
<assemblyIdentity name="Oracle.ManagedDataAccess" publicKeyToken="89b483f429c47342" culture="neutral"/>
<bindingRedirect oldVersion="4.121.0.0 - 4.65535.65535.65535" newVersion="4.122.19.1"/>
</dependentAssembly>
</assemblyBinding>
</runtime>
<oracle.manageddataaccess.client>
<version number="*">
<dataSources>
<dataSource alias="SampleDataSource" descriptor="(DESCRIPTION=(ADDRESS=(PROTOCOL=tcp)(HOST=localhost)(PORT=1521))(CONNECT_DATA=(SERVICE_NAME=ORCL))) "/>
</dataSources>
</version>
</oracle.manageddataaccess.client>
<connectionStrings>
<add name="OracleDbContext" providerName="Oracle.ManagedDataAccess.Client"
connectionString="User Id=user;Password=password;Data Source=oracle"/>
</connectionStrings>
</configuration>
我不知道问题是来自这个文件还是来自其他部分。我也尝试过创建一个新Data Connection
的. 我也下载了这个,没有任何变化。我该如何解决这个问题?Oracle Database
Oracle Developer Tools for Visual Studio
解决方案
我采取的解决方案是卸载 VS 2019 并开始使用 VS 2017。这是因为 ODAC 驱动程序仅与 VS 2017 及更旧版本兼容。完成此操作后,我可以选择使用位于 View -> Server Explorer -> Right Click in -> Add ConnectionODP .NET
的部分中的驱动程序创建数据库Server Explorer
Data Connections
编辑 现在有用于 Visual Studio 2019 的 ODAC 驱动程序
推荐阅读
- javascript - 使用 NPM 下载包文档
- angular - Angular 6 - 如何告诉 Angular 使用自定义属性的数据前缀而不是将它们直接放在 DOM 元素上?
- c++ - 未解析的外部符号(LNK2019)
- javascript - 使用其坐标删除表格内的图像
- python-3.x - 我如何将此代码调整为 python 3 以获取回文数?
- excel - Excel Macro VBA:双击勾选问题
- python - Pandas - 从现有数据创建二进制数据
- javascript - Maxmind列出一个州的所有城市
- python - 如何在 Pandas 中合并四个表?
- git - 恢复合并而不取消提交后完成