Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net 从Windows通过实体框架连接到Informix的问题_.net_Windows_Entity Framework_Informix - Fatal编程技术网

.net 从Windows通过实体框架连接到Informix的问题

.net 从Windows通过实体框架连接到Informix的问题,.net,windows,entity-framework,informix,.net,Windows,Entity Framework,Informix,我一直在尝试从.Net应用程序使用Entity Framework连接到Informix数据库,但在每一步都遇到了许多问题 尝试使用testconn40命令测试与数据库的连接时,我得到以下结果: 数据库.NET数据提供程序的SQL1159初始化错误,原因代码7 尝试从.Net应用程序连接时,出现以下异常: 无法加载文件或程序集“IBM.Data.DB2,Version=9.7.4.4, 区域性=中性,PublicKeyToken=7c307b91aa13d208'或其 依赖关系 下面是从运行Wi

我一直在尝试从.Net应用程序使用Entity Framework连接到Informix数据库,但在每一步都遇到了许多问题

尝试使用testconn40命令测试与数据库的连接时,我得到以下结果:

数据库.NET数据提供程序的SQL1159初始化错误,原因代码7

尝试从.Net应用程序连接时,出现以下异常:

无法加载文件或程序集“IBM.Data.DB2,Version=9.7.4.4, 区域性=中性,PublicKeyToken=7c307b91aa13d208'或其 依赖关系


下面是从运行Windows 7的64位计算机连接的.NET 4.5.1应用程序的全部内容

从Windows连接:

首先安装IBM数据服务器驱动程序包(DS驱动程序):

使用新名称通过命令行安装10.5.5修补程序:

v10.5fp5_ntx64_dsdriver_EN.exe -n "IBMDBCL2"
在安装过程中设置为默认值,如果未设置为默认值,则手动更新系统路径以指向第二个安装位置。在我的例子中:C:\Program Files\ibm\ibm数据服务器驱动程序\u 01\bin

尝试从命令行运行以下命令:

testconn40 "Database=<dbname>"; Server=<IP>:<Port>; User ID=<User>; Password=<Password>;"
gacutil /i IBM.DATA.DB2.dll
gacutil /i IBM.DATA.informix.dll
gacutil /i IBM.DATA.DB2.entity.dll
然后,您应该能够在以下位置查看程序集:C:\Windows\Microsoft.NET\assembly\GAC\U 64\

如果您得到:

BadImageFormatException:无法加载文件或程序集 'IBM.Data.DB2,Version=9.7.4.4,Culture=neutral, PublicKeyToken=7c307b91aa13d208'或其依赖项之一

这意味着框架正在尝试使用32位DLL。您可以明确告诉Visual Studio以x64运行,也可以转到Visual Studio中的项目属性,并确保在“生成”选项卡下取消勾选“首选32位”。

关于.dbo前缀的问题:

我遇到的最后一个问题是实体框架自动将dbo.作为前缀添加到所有表名中。Informix希望前缀是表的所有者(在我的例子中是用于创建表的用户帐户)。在ServerStudio中,您可以在表属性的“常规”选项卡上看到所有者

我可以通过将以下代码行添加到我的上下文类(请注意单引号)来解决此问题:

模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
HasDefaultSchema($“{}”);
...
}

希望这能帮助其他试图通过实体框架连接到Informix的人。

几个星期以来,我遇到了同样的问题,并且

无法加载文件或程序集“IBM.Data.DB2,Version=9.7.4.4, 区域性=中性,PublicKeyToken=7c307b91aa13d208'或其 依赖关系

嗯,我调整了我的.NET项目-将其设置为仅32位。现在它起作用了。显然,我的IBMDB2驱动程序只有32位,而64位不会加载

protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
    modelBuilder.HasDefaultSchema($"'{<DatabaseOwner>}'");

    ...
}