实体框架5代码优先于现有的Informix数据库

时间:2013-03-10 00:18:57

标签: c# entity-framework entity-framework-5 informix

让实体框架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"/>
    
  5. 当我尝试查询数据库时,我收到一个System.Data.ProviderIncompatibleException并带有以下消息:“在类型为'IBM.Data的商店提供程序实例上调用'GetService'方法后返回null .Informix.IfxFactory'。商店提供商可能无法正常运行。“

    我解编了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版本中。任何人都可以告诉我这是否可能或者我在某个时候走错了轨道?

2 个答案:

答案 0 :(得分:3)

现在,获得IBM数据库服务器实体框架支持的唯一方法是使用 IBM DB2实体提供程序。 IBM DB2实体提供程序可以连接到DB2和Informix服务器。

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

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

答案 1 :(得分:1)

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

此错误的原因代码7 与“注册表项错误”相关。 即使这些信息也没有给我很多线索给你帮助;但它将为DB2 DS Driver开发团队成员提供线索。 我将把这个论坛发布信息传递给DB2 DS Driver开发团队;这样他们就可以帮助您解决问题。

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

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