.NET 8预览版6中无法将子项数组映射为JSON的问题
问题原因
这是.NET 8 Preview 6版本中EF Core SQLite模块的已知bug:当使用OwnsMany搭配ToJson()映射包含值类型属性(如int Id)的子实体集合时,EF Core在处理空集合的初始化/反序列化逻辑时,会出现类型转换错误,将object类型错误赋值给值类型属性,从而触发异常。单个子实体(非集合)的场景不会触发该问题,因为集合的JSON映射逻辑在该预览版中存在缺陷。
解决方案
- 升级EF Core版本
微软在.NET 8 Preview 7及后续版本中修复了该问题,只需更新NuGet包到更高版本即可:
<PackageReference Include="Microsoft.EntityFrameworkCore.Sqlite" Version="8.0.0-preview.7.23375.4" />
推荐直接升级到正式版,版本号为8.0.0或更高。
- 临时绕过方案
如果暂时无法升级版本,可以将子实体的值类型属性改为可空类型,避免类型转换失败:
class TestChild { public required int? Id { get; set; } // 修改为可空int public required string Name { get; set; } }
注意:此方案仅作为临时过渡使用,升级到正式版后建议改回非可空类型以保证模型的正确性。
内容的提问来源于stack exchange,提问作者maloo
相关产品推荐
相关产品推荐

