You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows 11 24H2更新后Delphi调用C# COM组件EF查询报错求助

Windows 11 24H2后Delphi调用C# COM库时EF数值过滤触发$C0000090浮点异常的解决办法

核心原因推测

Windows 11 24H2更新调整了系统默认的浮点运算控制字,或是修改了跨语言/跨进程的浮点上下文传递规则,导致Delphi调用C# COM组件时,Entity Framework执行LINQ数值比较操作触发浮点无效异常。

解决方案

1. 对齐数据库与实体类的数值类型

浮点类型不匹配是此类异常的常见诱因,先确认数据库列和C#实体属性的类型完全一致:

  • 如果数据库中LoanAmt为decimal/numeric类型,C#实体中不要用float/double,改用decimal类型:
    // 实体类调整示例
    public class ARLoan
    {
        public decimal LoanAmt { get; set; } // 与数据库类型严格匹配
        // 其他属性...
    }
    
    同时LINQ查询使用decimal字面量做比较:
    var LoanList = db.ARLoans.Where(x => x.LoanAmt == 0m).ToList();
    

2. 避免直接使用浮点相等判断

如果必须使用float/double类型,不要直接用==做相等判断,而是设置精度阈值:

// 针对float类型的安全比较方式
var LoanList = db.ARLoans.Where(x => Math.Abs(x.LoanAmt) < 1e-6).ToList();

3. 在C# COM方法中重置浮点运算上下文

Windows 11 24H2可能改变了默认浮点控制字,在COM方法开头重置为标准状态:

using System.Runtime.InteropServices;

namespace SampleApp
{
    [Guid("ACCBC742-CAE9-4958-97E9-AA9CDA61DDF7"), ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]
    public class ARLoanManager
    {
        [DllImport("kernel32.dll")]
        static extern uint _controlfp(uint newControl, uint mask);

        public void ARUpdateLoan(string LoanNo)
        {
            // 重置浮点控制字为系统默认值
            _controlfp(0x0009001F, 0xFFFFFFFF);

            CSCommon.MyConnString = @"Password=mahavira;Persist Security Info=True;User ID=sa;Initial Catalog=SaccoMan;Data Source=.\sqlexpress;connection timeout=60;";

            using (var db = new DataContext())
            {
                var LoanList = db.ARLoans.Where(x => x.LoanAmt == 0).ToList();
            }
        }
    }
}

4. 以兼容模式运行Delphi程序

右键Delphi生成的exe文件 → 属性 → 兼容性 → 勾选「以兼容模式运行这个程序」,选择Windows 10或更早版本,应用后重新测试调用。

5. 更新依赖版本

  • 确认.NET Framework版本与Windows 11 24H2兼容,建议升级到.NET Framework 4.8.1及以上;
  • 将Entity Framework 6.5.1升级到最新稳定版,检查官方是否有针对Windows 11的修复补丁。

调试建议

在C# COM方法中添加日志输出,确认异常是在EF查询执行时抛出,还是在结果返回给Delphi的过程中触发,进一步缩小问题范围。

内容的提问来源于stack exchange,提问作者KE50

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.12 22:00:53