Entity Framework 5 Code First 到现有 Informix 数据库

Posted

技术标签:

【中文标题】Entity Framework 5 Code First 到现有 Informix 数据库【英文标题】:Entity Framework 5 Code First to Existing Informix Database 【发布时间】:2013-03-10 00:18:57 【问题描述】:

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

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

    添加了以下连接字符串:

    <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”类型的商店提供程序实例上调用“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版本中。谁能告诉我这是否可行,或者我是否在某个时候走错了路?

【问题讨论】:

【参考方案1】:

目前,获得对 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 协议并在连接中指定该端口号。

【讨论】:

当我切换到 DB2 提供程序时,我收到一个 SQL1159N 错误,原因代码为 7,并且没有其他信息。 publib.boulder.ibm.com/infocenter/db2luw/v9/index.jsp?topic=/… 仅列出 6 个原因代码。这是否表明服务器上未安装 DRDA? 或者我可能需要更改连接字符串,而不仅仅是指定一个新的提供者?【参考方案2】:

您指向的 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 的常见问题解答 URL。 http://www.ibm.com/developerworks/wikis/display/DB2/DB2%20and%20.NET%20FAQs

【讨论】:

以上是关于Entity Framework 5 Code First 到现有 Informix 数据库的主要内容,如果未能解决你的问题,请参考以下文章

Entity Framework 5 Code First 迁移:获取数据库脚本

Entity Framework 5.0系列之自动生成Code First代码

Entity Framework 5 Code First 到现有 Informix 数据库

将相关数据添加到 Entity Framework 5 (Code-First) 中的交叉引用表

如何在MVC 5的类库项目中使用Entity Framework 6 Code First

使用 Entity Framework 6.1 和 MVC 5 从数据库中使用 Code First 后如何同步模型?