【问题标题】:EntityFramework.IBM.DB2 can't connect to db2EntityFramework.IBM.DB2 无法连接到 db2
【发布时间】:2016-07-01 01:26:39
【问题描述】:

我正在尝试使用 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

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

【问题讨论】:

  • 检查 IBM.Data.DB2 和 IBM.Data.DB2.EntityFramework dll 方法 IBM.Data.DB2.DB2Trace.Entity_CheckDB2Trace() 被标记为内部并且正在从另一个命名空间调用
  • 你能先执行代码吗?我在尝试执行代码优先 EF6 模型时遇到了错误。
  • 还没试过代码。一旦我正确安装了这个驱动程序,我就发现了一堆问题,因为我们正在为匹配的驱动程序运行旧版本的 DB2,而且看起来它们不兼容。我们决定暂时坚持使用 EF5。

标签: entity-framework db2 entity-framework-6


【解决方案1】:

原来我已经安装了 10.5.5 驱动程序,但未能将其设置为默认值。运行“默认 DB2 和数据库客户端接口选择向导”(只需在开始菜单中搜索即可找到)并将新的设置为默认值后,它工作正常

【讨论】:

  • 嗨@dpix,我遇到了同样的问题,但处于初步阶段。我已经安装了 Visual Studio 2015 + 实体框架 6 + IBM.Data.DB2.EntityFramework, Version=10.5.5.6。当我打开 ODBC 连接管理器时,我可以找到引用 DB2CIL.dll 的 IBM DB2 ODBC 驱动程序版本 10.05.00。我的问题是我无法在实体数据模型向导中获取 DB2 数据源。我错过了什么吗?请问你能帮忙吗?谢谢
  • 嗯,对不起@Ramu,我已经有一段时间没有接触任何 DB2 了。我从来没有与 Visual Studio 进行任何集成。祝你好运!附:一旦我们真正开始工作,db2 驱动程序就会出现很多问题,我想我们最终改用了 3rd 方驱动程序
【解决方案2】:

@Ramu,我最近开始迁移我们的一个旧应用程序,并开始研究如何使用 Entity Framework 6 连接到 IBM DB2。直接回答您的问题 - 它不可能在 VS 2015 中工作,因为 IBM 数据库添加-ins 仅在 VS 2013 之前受支持。我们已联系 IBM,他们不知道他们是否会为 VS 2015 发布这些插件。

作为一种解决方法,我在 VS 2013 中构建了我的存储库,并将其作为一个 nuget 包。我已经将该包导入到我的 VS 2015 项目中。现在,包比提供硬 dll 引用要干净得多。

这就是我设置环境的方式

  1. 使用 Fix-pack 7 安装 IBM DB2 10.5。这应该会获得 IBM Data server Client 10.5。
  2. 在同一个安装包上 – 安装 IBM Database Add-Ins for Visual Studio。
  3. 安装 IBM 数据服务器驱动程序 10.5。
  4. 为 VS2012/VS2013 安装 EF 工具

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

希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-13
    • 2017-03-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多