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

C# EF Core执行LINQ查询报System.InvalidCastException字节转整型错误

这个错误是Entity Framework(EF/EF Core)执行查询时,将数据库返回的字段值映射到C#实体类属性过程中出现的类型不匹配问题,你代码中没有显式使用Byte类型,问题出在实体类与数据库表的字段映射、或者关联表的关联属性配置上。

常见报错原因

  • 实体类属性与表字段类型不匹配:你当前操作的A表、或者Include关联的R表中,存在数据库侧类型为TINYINT(SQL Server环境,其他数据库对应单字节数值类型)的字段,但你C#实体类中对应的属性声明为int类型。数据库查询返回的字段值是System.Byte类型,EF尝试强制转换为实体属性要求的System.Int32就会触发该异常。
  • 关联属性类型不匹配:A表与R表关联的外键/主键类型配置错误,比如A实体中存储的R表外键声明为int,但R表的主键在数据库中是TINYINT,或者实体类两侧的关联属性类型不一致,关联查询时触发类型转换失败。
  • 映射配置错误:如果你使用Fluent API或数据注解自定义了字段映射,可能存在误将byte类型属性强制配置为映射数据库INT类型、或者反过来的错误配置,导致类型转换逻辑异常。

排查方案

  • 逐一核对A实体、R实体的所有数值类型属性,和对应数据库表字段的类型匹配关系:SQL Server中TINYINT对应C#byte、SMALLINT对应short、INT对应int、BIGINT对应long,校正所有不匹配的属性类型。
  • 核对A和R的关联属性:确保外键属性和关联主键的类型在实体侧、数据库侧完全一致。
  • 逐步缩小查询范围定位问题表:先简化查询为_context.A.ToList()测试是否报错,如果仍报错则问题出在A表的映射配置;如果正常,再执行_context.A.Include(e => e.R).ToList()测试,报错则说明问题出在R表的映射或A、R的关联配置。
  • 检查所有自定义的EF映射配置,删除错误的字段类型强制转换配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 01:27:01