EntityFramework.IBM.DB2 无法连接到 db2

EntityFramework.IBM.DB2 can't connect to db2

我正在尝试使用 EF6 连接到 db2 实例,并且发现了新的 IBM Entity Framework 数据提供程序 here

已将提供商添加到应用配置:

<providers>
    <provider invariantName="System.Data.SqlClient" type="System.Data.Entity.SqlServer.SqlProviderServices, EntityFramework.SqlServer" />
    <provider invariantName="IBM.Data.DB2" type="IBM.Data.DB2.EntityFramework.DB2ProviderServices, IBM.Data.DB2.EntityFramework, Version=10.5.5.6, Culture=neutral, PublicKeyToken=7c307b91aa13d208" />
</providers>

连接字符串如下所示:

<add name="DB2" connectionString="Server=blah;Database=meh;Uid=user;Pwd=pword;" providerName="IBM.Data.DB2" />

我可以实例化一个上下文,但是当我尝试运行查询时它会抛出一个 MethodAccessException:

Attempt by method 'IBM.Data.DB2.EntityFramework.DB2ProviderServices.GetDbProviderManifestToken(System.Data.Common.DbConnection)' to access method 'IBM.Data.DB2.DB2Trace.Entity_CheckDB2Trace()' failed.

我已经安装了 DB2 Version 10.5 Fix Pack 5

关于我可能做错了什么有什么想法吗?

原来我安装了10.5.5的驱动,但是默认设置失败。在 运行 "Default DB2 and Database Client Interface Selection wizard"(仅通过在开始菜单中搜索找到)并将新设置为默认设置后,它工作正常

@Ramu,我最近开始迁移我们的遗留应用程序之一,并开始弄清楚如何使用 Entity Framework 6 连接到 IBM DB2。直接回答你的问题 - 它不可能在 VS 中工作2015 年,因为 IBM 数据库加载项仅在 VS 2013 之前受支持。我们已经联系了 IBM,他们不知道他们是否会为 VS 2015 发布这些加载项。

作为解决方法,我在 VS 2013 中构建了我的存储库并将其作为 nuget 包。我已经将该包导入到我的 VS 2015 项目中。现在,包比提供硬 dll 引用更简洁。

这就是我设置环境的方式

  1. 安装带有 Fix-pack 7 的 IBM DB2 10.5。这应该会得到 IBM 数据服务器客户端 10.5。
  2. 在同一个安装包上 – 安装 IBM Database Add-Ins for Visual Studio.
  3. 安装 IBM 数据服务器驱动程序 10.5。
  4. 为 VS2012/VS2013
  5. 安装 EF 工具

转到程序和功能部件 - 并始终确保 IBM 数据服务器客户端和 IBM 数据库 VS 插件应具有相同的版本、发行版和修复包级别。

希望这对您有所帮助。