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

.NET 8预览版6中无法将子项数组映射为JSON的问题

问题原因

这是.NET 8 Preview 6版本中EF Core SQLite模块的已知bug:当使用OwnsMany搭配ToJson()映射包含值类型属性(如int Id)的子实体集合时,EF Core在处理空集合的初始化/反序列化逻辑时,会出现类型转换错误,将object类型错误赋值给值类型属性,从而触发异常。单个子实体(非集合)的场景不会触发该问题,因为集合的JSON映射逻辑在该预览版中存在缺陷。

解决方案

  1. 升级EF Core版本
    微软在.NET 8 Preview 7及后续版本中修复了该问题,只需更新NuGet包到更高版本即可:
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0-preview.7.23375.4" />

推荐直接升级到正式版,版本号为8.0.0或更高。

  1. 临时绕过方案
    如果暂时无法升级版本,可以将子实体的值类型属性改为可空类型,避免类型转换失败:
class TestChild
{
    public required int? Id { get; set; } // 修改为可空int
    public required string Name { get; set; }
}

注意:此方案仅作为临时过渡使用,升级到正式版后建议改回非可空类型以保证模型的正确性。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 00:01:36