EntityFramework.IBM.DB2无法连接到db2

时间:2015-01-06 21:07:35

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

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

关于我可能做错的任何想法?

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

@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. 在同一安装包上 - 安装Visual Studio的IBM数据库加载项。
  3. 安装IBM Data Server Driver 10.5。
  4. 安装适用于VS2012 / VS2013的EF Tools
  5. 转到程序和功能 - 并始终确保VS的IBM Data Server客户端和IBM Database加载项应具有相同的版本,发行版和修订包级别。

    希望这有帮助。