1、检查引用中是是否有这两个引用,没有的话需要添加,
(注意:两个引用文件的版本(在NuGet管理器中下载时的版本)必须保持一致,比如在NuGet管理器中下载时的版本都是19.7.0, Oracle.ManagedDataAccess版本号是4.122.19.1,对应的Oracle.ManagedDataAccess.EntityFramework版本号是6.122.19.1)
2、检查app.config中是否有下面的内容,没有的话添加进去。注意:版本号需要与引用的版本号保持一致。
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
<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>
3、安装ODTforVS2017,我用的是vs2017,所以安装这个版本。
(注意:版本必须与上面的引用文件版本保持一致,若三者版本不一致,会报错)
Oracle Developer Tools for Visual Studio 2017 MSI Installerhttps://www.oracle.com/database/technologies/dotnet-odacmsi-vs2017-downloads.htmlPS:如果以上3个步骤完成,还是报错具有固定名称“Oracle.ManagedDataAccess.Client”的 ADO.NET 提供程序未在计算机或应用程序配置文件中注册或无法加载。
那么,找到以下路径文件:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Config\machine.config
记得修改前备份。 注意版本号的匹配。
将下面这段配置文件加入<configSections>节点下:
<section name="oracle.unmanageddataaccess.client" type="OracleInternal.Common.CustomSectionHandler, Oracle.DataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<section name="oracle.dataaccess.client" type="System.Data.Common.DbProviderConfigurationHandler, System.Data, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" />
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
将以下配置加入<system.data><DbProviderFactories>
节点下:
<add name="ODP.NET, Unmanaged Driver" invariant="Oracle.DataAccess.Client" description="Oracle Data Provider for .NET, Unmanaged Driver" type="Oracle.DataAccess.Client.OracleClientFactory, Oracle.DataAccess, Version=4.122.19.1, Culture=neutral, PublicKeyToken=89b483f429c47342" />
<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" />
配置完成后重启vs即可打开.edmx文件。
4、如果报错: Type guid raw 未使用命名空间或别名进行限定。只有基元类型才可以在不限定的情况下使用。
检查引用中是否有这个引用,没有的话添加进去。
5、重启vs2017就可以打开.edmx文件了。
6、从数据库更新模型报错:无法将运行时连接字符串转换为设计时等效项,没有为提供程序“mysql.data.mysqlclient”安装为设计目的启用visual studio以便与数据库进行通信所需要的库
关闭VS,找到ODTforVS2017的安装路径,运行Oracle.VsDevTools.15.0.vsi重新安装后,重启VS程序,即可解决。(如果不行就重启电脑)
7、新建ADO.NET 实体数据模型向导,选择oracle数据库连接后点击下一步就闪退
找到ODTforVS2017的安装路径,找到Oracle.ManagedDataAccess.dll文件,
查看Oracle.ManagedDataAccess.dll文件的版本号 ,
然后对比引用中Oracle.ManagedDataAccess的版本号,二者必须保持一致。
同时Oracle.ManagedDataAccess.EntityFramework的版本也要与Oracle.ManagedDataAccess的版本保持一致。
如果不一致,删除引用后,从NuGet管理器中更新对应的版本。
最后,修改app.config文件中对应的版本号,就可以解决了。
<configSections>
<section name="oracle.manageddataaccess.client" type="OracleInternal.Common.ODPMSectionHandler, Oracle.ManagedDataAccess, Version=4.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<providers>
<provider invariantName="Oracle.ManagedDataAccess.Client" type="Oracle.ManagedDataAccess.EntityFramework.EFOracleProviderServices, Oracle.ManagedDataAccess.EntityFramework, Version=6.122.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
<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.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>