我开发了一个首先使用EF db和Oracle数据库的应用程序,它在本地开发环境中运行良好。起初,我不喜欢向GAC安装内容的方法,在这种情况下,ODAC包含ODP.NET托管数据访问,并选择在我的应用程序中使用它的NuGet版本。但是当我尝试首先使用EF db生成EDMX时失败了。所以我接着在开发应用程序时跟随this instruction,首先使用EF数据库和Oracle数据库。
当我不得不将其部署到生产环境中并且管理员不允许在该服务器中安装ODP.NET托管数据访问时,会出现问题。我尝试手动将Oracle.ManagedDataAccess.dll复制到生产环境中但仍然失败。
这是抛出的异常:
System.ArgumentException:具有不变名称的ADO.NET提供程序 ' Oracle.ManagedDataAccess.Client'要么没有注册 机器或应用程序配置文件,或无法加载。见 细节的内在例外。
InnerException:System.ArgumentException消息:无法找到 请求.Net框架数据提供者。它可能没有安装。
这是app.config:
<configuration>
<configSections>
<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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</configSections>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
</startup>
<connectionStrings>
<add name="theConnectionString" connectionString="" />
</connectionStrings>
<entityFramework>
<defaultConnectionFactory type="System.Data.Entity.Infrastructure.SqlConnectionFactory, EntityFramework" />
<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.121.2.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</providers>
</entityFramework>
</configuration>
有没有办法在没有在生产服务器中安装任何东西的情况下部署它?