我正在尝试使用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
关于我可能做错的任何想法?
答案 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引用要干净得多。
这是我设置环境的方式
转到程序和功能 - 并始终确保VS的IBM Data Server客户端和IBM Database加载项应具有相同的版本,发行版和修订包级别。
希望这有帮助。