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

EF Core 7.0.3配置JSON嵌套拥有实体时触发空引用异常

EF7 RC2 中 ToJson() 配置嵌套拥有实体触发空引用异常的解决办法

问题概况

  • 基于EF7 RC2官方示例编写的精简代码,创建UserDbContext时,OnModelCreating方法触发空引用异常
  • 触发场景:为Author实体的Contact导航属性配置ToJson(),同时嵌套配置拥有Address实体
  • 验证结论:移除ToJson()仅保留嵌套拥有实体配置时,代码正常运行,能生成ContactDetails相关字段,已排除其他代码问题

问题原因

EF7 RC2版本存在bug,当对包含拥有实体的导航属性使用ToJson()时,EF Core内部处理JSON序列化的元数据逻辑会出现空引用。

解决方法

  1. 升级版本:将EF7升级到正式版或后续更新的预览版本,官方通常会在正式版修复RC阶段的这类bug
  2. 临时替代方案:如果暂时无法升级,可将Contact和Address合并为单个实体类,直接对该类使用ToJson(),避免嵌套拥有实体的配置
  3. 调整配置顺序(临时规避):确保先调用ToJson()再配置嵌套拥有实体,部分场景下可临时解决问题,示例代码:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Author>()
        .OwnsOne(a => a.Contact, contactBuilder =>
        {
            contactBuilder.ToJson();
            contactBuilder.OwnsOne(c => c.Address);
        });
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 17:12:46