2

我在让实体框架 5 与 Informix 一起工作时遇到了很多麻烦。寻找我能得到的任何帮助。我遵循以下程序:

  1. 安装了客户端SDK(由于与InstallAnywhere安装程序和Windows 8明显不兼容,我无法安装clientsdk.3.70.FC7DE,在同事的推荐下我安装了clientsdk.3.50.FC9)
  2. 通过 ODBC 验证与数据库的连接
  3. 使用 testconn40.exe 工具验证了连接性。
  4. 添加了以下连接字符串:

    <add name="OpenNet"
        connectionString="Database=*****;
          Server=*****:40411;User ID=*****;Password=******;Persist Security
          Info=True;Authentication=Server;" providerName="IBM.Data.Informix"/>
    

当我尝试查询数据库时,我收到带有以下消息的 System.Data.ProviderIncompatibleException:“在‘IBM.Data.Informix.IfxFactory’类型的商店提供者实例上调用‘GetService’方法后返回了空值。商店提供商可能无法正常运行。”

我反编译了 IBM.Data.Informix.IfxFactory 并发现以下内容:

Type type = Type.GetType("IBM.Data.Informix.Entity.IfxProviderServices,  
                 IBM.Data.Informix.Entity, Version=9.7.4.4, 
                 Culture=neutral, PublicKeyToken=7c307b91aa13d208", false);

我在任何地方都找不到IBM.Data.Informix.Entity的程序集。也许它包含在我可以安装的后来的clientsdk.3.70.FC7DE版本中。谁能告诉我这是否可行,或者我是否在某个时候走错了路?

4

2 回答 2

3

目前,获得对 IBM 数据库服务器的 Entity Framework 支持的唯一方法是使用IBM DB2 实体提供程序。IBM DB2 实体提供者可以连接到 DB2 和 Informix 服务器。

IBM DB2 实体提供程序是 IBM 数据服务器驱动程序包的一部分。IBM Informix Client SDK 还将 IBM Data Server Driver 包捆绑为可选安装模块。请使用名称空间 IBM.Data.DB2 而不是 IBM.Data.Informix。

仅供参考:IBM DB2 Provider 使用 DRDA 协议;因此它无法连接到 Informix 服务器的本机 (SQLI) 端口。请在 Informix 服务器上启用 DRDA 协议并在连接中指定该端口号。

于 2013-03-11T17:25:32.237 回答
1

您指向的 URL 是旧版本,来自相对较新版本的文档将更新有关原因代码 7 的信息。 http://publib.boulder.ibm.com/infocenter/db2luw/v9r5/topic/com.ibm .db2.luw.messages.sql.doc/doc/msql01159n.html

此错误的原因代码 7与“注册表项错误”有关。即使是这些信息也没有给我提供太多帮助的线索;但它会为 DB2 DS 驱动程序开发团队成员提供线索。我会将这个论坛发帖信息传递给 DB2 DS 驱动程序开发团队;以便他们可以帮助您解决问题。

很可能错误SQL1159N将通过重新安装 DS 驱动程序包得到解决,您也可以尝试。

这是 DB2 .NET 的 FAQ URL。 http://www.ibm.com/developerworks/wikis/display/DB2/DB2%20and%20.NET%20FAQs

于 2013-03-12T04:54:06.227 回答