0

我在 Windows 7 + VS 2012 下使用 Entity Framework 4.1 做了一个完整的开发

我的应用程序是一个 Windows 控制台应用程序,它使用实体框架来访问在远程服务器中运行的 Oracle 数据库。我的应用程序具有 x64 目标设置,而我的 Windows 7 也是 64 位的。

在我开始部署到生产主机之前,开发机器上一切正常。

生产主机:新安装的 Windows Server 2012。安装 ODAC 64 位并在 odp.net/managed/x64 文件夹运行 configure.bat。

我正在从 VS2012 的 /bin/Debug 文件夹中生成的应用程序中获取所有文件,并与 Oracle.DataAccess.dll 一起复制到目标机器。

我的连接字符串有providername = System.Data.EntityClient. 这是由 EF 模型优先向导生成的。

运行时,我收到以下异常:

Unable to find the requested .NET Framework Data Provider. It may not be installed. at System.Data.EntityClient.EntityConnection.GetFactory (String providerString).

我检查了 ODCA configure.bat 并安装了 OracleManageDataAccessDTC.DLL

所以,我很困惑。我有Oracle.DataAcess.dllOracleManageDataAccessDTC.dll但这些都不起作用。这是我第一次使用 EF 4.1 部署 Oracle。

我看了很多帖子,根本没有得出任何结论。

希望可以有人帮帮我。

4

2 回答 2

1

不知道这是否会有所帮助,但是..

在意识到我正在构建的应用程序需要 2 个连接字符串之前,我找到了您的帖子,一个用于我的 WebSecurity / WebMatrix.Data 模型,一个用于我的实体框架模型。

我在本地建立了这个项目,一切都运行良好。将连接字符串更新到远程服务器后,我遇到了与您相同的错误,直到意识到 WebMatrix.Data 模型需要使用 System.Data.SqlClient 提供程序而不是 System.Data.EntityClient 提供程序。

如果它真的是一个 ORacle 问题,这篇文章可能会帮助你 -->无法加载文件或程序集'Oracle.DataAccess 错误

在服务器上安装 32 位 ODAC 驱动程序以及构建应用程序 x86 为我解决了这个问题。

于 2014-05-15T20:17:24.330 回答
1

ODAC 在服务器上工作很痛苦。您需要考虑很多事情:

  1. 您必须在服务器上安装 Oracle 客户端
  2. 如果您使用的是 TNS 名称文件,则需要将其放在网络文件夹中
  3. 您实际上没有使用 bin 文件夹中的 oracle dll,当您安装客户端和 ODAC 时,该 dll 需要服务器上的一堆其他依赖 dll。
于 2014-05-19T19:56:55.553 回答