在API控制器中检测到JSON.Net自引用循环

时间:2016-05-18 15:23:44

标签: entity-framework asp.net-web-api json.net

环境:

  • .net 4.6 1.0.0-rc1-update2
  • 实体框架核心rc final。

我的API控制器抛出此异常:

  

应用程序抛出了未处理的异常。   Newtonsoft.Json.JsonSerializationException:检测到属性' Site'的自引用循环。使用' Blog.Model.Site'。路径' [0] .Menus [0]'。

如何实施此处建议的修补程序: JSON.Net Self referencing loop detected

据我所知,EF核心并没有实现延迟加载或代理创建。

我的控制器只返回此查询生成的集合:

public async Task<List<Site>> GetActiveSites()
{
    var query = db.Sites.Where(x => x.Active)
        .Include(x => x.Menus)
        .ThenInclude(m => m.MenuContentItems)
        .ThenInclude(x => x.ContentItem);

    return await query.ToListAsync();
}

其中:

  • 网站(1) - 菜单(*)
  • 菜单(1) - MenuontentItem(*)
  • MenuContentItem(*) - ContentItem(1)

1 个答案:

答案 0 :(得分:0)

创建一个没有EF具有的双向映射的视图模型。从您的ef查询中填充该视图模型。