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

使用Devart返回数据库对象时遇Json循环引用错误的解决咨询

解决Devart实体模型循环引用导致的Json序列化错误(无需匿名对象)

针对你遇到的System.Text.Json.JsonException循环引用问题,以下是Devart层面的几种配置方案,无需手动创建匿名对象:

1. 在Entity Developer中全局配置循环引用处理

打开你的Devart模型文件(.edml):

  • 点击模型空白区域,在右侧属性面板找到Serialization Options
  • 勾选Ignore Cyclic References选项,保存模型后重新生成实体类与DbContext
  • 此配置会让生成的实体自动处理循环引用,序列化时忽略反向导航属性的循环关联

2. 针对单个导航属性配置序列化行为

如果只需要处理特定实体的循环引用:

  • 在Entity Developer中选中存在循环引用的实体(如PortalCodeMappings或Content)
  • 找到对应的反向导航属性(比如PortalCodeMappings中的Content属性)
  • 在属性面板设置Serialization Mode为Unidirectional,或者直接勾选Ignore in Serialization为True
  • 重新生成代码后,该导航属性会被标记为序列化忽略,避免循环引用

3. 配置DbContext禁用延迟加载与代理生成

在Devart生成的DbContext构造函数中添加以下配置:

public YourDbContext() : base("YourConnectionString")
{
    // 禁用延迟加载,避免序列化时自动加载关联对象引发循环
    this.Configuration.LazyLoadingEnabled = false;
    // 禁用动态代理生成,防止代理类的隐藏引用导致循环
    this.Configuration.ProxyCreationEnabled = false;
}

你也可以在Entity Developer的模型属性中提前关闭Proxy Creation Enabled选项,生成的DbContext会默认应用此配置

补充说明

以上所有配置均通过Devart工具或生成的代码完成,无需手动修改实体类或创建匿名对象。如果仍有问题,可以检查模型中是否存在多层循环引用,针对性地对深层导航属性重复上述配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 15:10:19