Tom*_*day 2 .net oracle odp.net iis-8 odp.net-managed
我正在尝试将我的.NET项目切换到manage oracle以使部署更容易.但是,我在测试Win Server 2013环境中遇到以下错误:
无法确定"Oracle.ManagedDataAccess.Client.OracleConnection"类型连接的提供程序名称.
到目前为止我采取的步骤:
Imports Oracle.DataAccess陈述转换为Imports Oracle.ManagedDataAccess我没有得到任何构建错误,并且项目在本地运行良好.但是,当部署到测试环境时,我收到此错误.测试环境是Windows Server 2012,并且安装了旧的Oracle 11.2.0客户端工具.
这是我的连接创建代码:
Public Sub New()
MyBase.New(
New OracleConnection(
ConfigurationManager.ConnectionStrings("Entities").ConnectionString),
True)
End Sub
Run Code Online (Sandbox Code Playgroud)
以下是我尝试过的3种不同风格的连接配置(两种都在本地工作,但在测试环境中产生同样的问题)
(格式化可见性)
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
providerName="Oracle.ManagedDataAccess.Client" />
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
providerName="Oracle.DataAccess.Client" />
<add
name="Entities"
connectionString="
Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=###.###.###.###)(PORT=1521)))(CONNECT_DATA=(SERVICE_NAME=______)));
User Id=_____;
Password=_____;"
/>
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激!
手动下载方法
感谢@Christian Shay指出Managed ODAC的NuGet版本不是由Oracle编写的
要在Visual Studio 2012(.NET 4.5)中使用托管Oracle数据访问和实体框架:
Install-Package EntityFramework -Version 5.0.0
下载最新的Oracle数据访问组件(ODAC)
手动参考 Oracle.ManagedDataAccess.dll
将此部分添加到配置文件中
<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.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
然后像往常一样继续.此时似乎Entity Framework 6还不支持Oracle.ManagedDataAccess,因此必须运行第5版.
另请注意,如果您使用的是Visual Studio 2010或更早版本,以.NET 4为目标,NuGet将下拉EF5,但使用4.x程序集.我没有在带有.NET 4的VS2010上测试过这个.
非官方的NuGet方法
要在Visual Studio 2012(.NET 4.5)中使用托管Oracle数据访问和实体框架:
Install-Package EntityFramework -Version 5.0.0
下载Oracle Data Provider for .NET(ODP.NET)托管驱动程序
Install-Package odp.net.managed
将此部分添加到配置文件中
<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.121.1.0, Culture=neutral, PublicKeyToken=89b483f429c47342" />
</DbProviderFactories>
</system.data>
Run Code Online (Sandbox Code Playgroud)
然后像往常一样继续.此时似乎Entity Framework 6还不支持Oracle.ManagedDataAccess,因此必须运行第5版.
另请注意,如果您使用的是Visual Studio 2010或更早版本,以.NET 4为目标,NuGet将下拉EF5,但使用4.x程序集.我没有在带有.NET 4的VS2010上测试过这个.
| 归档时间: |
|
| 查看次数: |
7445 次 |
| 最近记录: |