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

.NET 6升级后单表EF Core无法获取鉴别器值问题排查

排查方向
  • 移除不必要的鉴别器配置:该实体无继承关系的前提下,HasDiscriminator(x => x.Id)属于冗余配置。EF Core 6.0对鉴别器的校验逻辑比3.1更严格,用主键作为鉴别器会导致表达式树构建时的类型匹配异常。直接删除实体配置中的HasDiscriminator相关代码,重新编译测试。

  • 统一EF Core依赖版本:确认项目中所有EF Core相关包(如Microsoft.EntityFrameworkCore、Microsoft.EntityFrameworkCore.SqlServer)的版本均为6.0.x,避免混合不同版本导致的兼容性问题。检查项目文件(.csproj)中的包引用,确保版本一致。

  • 检查隐式继承/全局配置影响:排查OpOrganisation是否间接继承了带有鉴别器配置的基类,或全局模型配置中是否对该实体类型设置了默认鉴别器。可通过代码modelBuilder.Model.FindEntityType(typeof(OpOrganisation)).GetDiscriminator()查看当前鉴别器配置详情,确认是否存在重复或冲突的配置。

  • 清理编译缓存与模型缓存:删除项目的bin、obj目录,重新生成解决方案;开发环境下可在DbContext配置中添加.DisableModelCaching()禁用模型缓存,验证是否为旧缓存导致的配置残留问题。

  • 验证鉴别器属性的映射与数据库列一致性:检查实体Id属性与数据库intOrganisationId列的类型匹配性(是否均为非空int),确认EF Core的映射配置中未出现类型不匹配的情况(如误将int映射为nullable int)。

  • 测试移除鉴别器后的迁移生成:删除鉴别器配置后,重新生成迁移,确认EF Core不再尝试处理该实体的鉴别器逻辑,再执行查询验证是否解决异常。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 06:57:15