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

Entity Framework Core新增列后LINQ查询无法翻译如何解决?

解决方案

  • 检查新增属性的可访问性
    你的CurrentRunningServiceDbModel类默认无修饰符为internal,新增的IsActive属性如果没有显式加public修饰符,当模型类和ServicesContext不在同一个程序集时,EF无法读取属性信息,会将其判定为未映射字段,导致查询无法转换。你可以给属性加public修饰符,或者在模型类所在程序集的AssemblyInfo.cs中添加如下配置:
    [assembly: InternalsVisibleTo("你的DbContext所在程序集名称")]
    
  • 排查属性映射配置
    检查是否误给IsActive属性加了[NotMapped]特性,或是Fluent API中存在忽略该字段的配置,比如:
    modelBuilder.Entity<CurrentRunningServiceDbModel>().Ignore(x => x.IsActive)
    
    如有相关配置直接删除即可。
  • 校验字段匹配性
    确认数据库新增列的名称、类型和模型属性完全匹配:比如SQL Server中布尔类型对应bit类型,列名是否为IsActive;如果数据库列允许为NULL,属性需要声明为可空布尔类型public bool? IsActive { get; set; },否则会出现映射不匹配的问题。
  • 简易测试验证
    你可以先执行无过滤条件的查询,验证属性是否正常映射:
    var testData = dbContext.CurrentRunningServices.FirstOrDefault();
    
    查看返回对象的IsActive是否能正常取到数据库值,如果取值为默认值说明映射未生效,回到上述步骤逐一排查即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 12:27:00