我正在尝试使用 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 类型