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) 中的交叉引用表