2

我正在尝试使用 linq2db 库(顺便谢谢!)从 Informix 数据库中检索记录。我按照文档中的步骤操作,并能够使用 Visual Studio 调试器从 ASP.NET 控制台应用程序中成功获取记录。但是,我随后尝试使用全新的独立 ASP.NET MVC5 应用程序进行相同操作,但我收到错误消息“'IBM.Data.Informix.IfxDecimal' 的类型初始化程序引发了异常。” 也使用 Visual Studio 调试器运行。我通过下载源代码并添加一些断点进行了一些挖掘,发现文件LinqToDB.DataProvider.Informix.InformixDataProvider文件的第125行和第133行涉及导致错误。但这就是我所得到的。因此,在 Web 应用程序的上下文中运行会引发错误,

下面是 LinqToDB.DataProvider.Informix.InformixDataProvider 的第 125 行

MappingSchema.AddScalarType(_ifxDecimal,  GetNullValue(_ifxDecimal),  true, DataType.Decimal);

下面是该类中的 GetNullValue 方法(同一文件的第 130 到 134 行),返回 getValue.Compile()()时抛出错误

static object GetNullValue(Type type)
{
    var getValue = Expression.Lambda<Func<object>>(Expression.Convert(Expression.Field(null, type, "Null"), typeof(object)));
    return getValue.Compile()();
}

附加信息.. 在表 2-1 中标题为 Informix Client Software Development Kit (Version 4.10) 的文档中。检索 Informix 数据类型的最佳类型 它表明存在三种 DECIMAL Informix 类型,每种映射到三种不同的建议 .NET 类型

4

2 回答 2

0

恐怕您不能在部分信任环境中使用 Informix。当我尝试以部分信任的方式创建 IfxConnection 时,我得到 SecurityException - '该程序集不允许部分信任的调用者。

于 2015-05-22T05:49:11.957 回答
-1

太老了,无法评论,但是,我也有这个错误。解决了它放置getValue.Compile()getValue.Compile()();.

现在工作正常。

于 2016-03-29T01:10:31.017 回答