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