ASP.Net Web API 2序列化JSON错误:"自我引用循环"

时间:2017-05-03 20:40:14

标签: entity-framework-6 asp.net-web-api2 dto ef-database-first

  1. Web API Controller在实体框架数据库优先模型中调用存储过程。

  2. 存储过程会在我的SQL Server数据库中插入一个条目,然后返回新创建的条目。

  3. 存储过程的函数导入设置为返回复杂类型,这是一个自定义创建的 TagDTO (此DTO在 TasksModel.tt 中创建)

  4. 但是,我继续收到错误" 检测到自我参考循环"调用此API方法时。

    我从下面缺少什么?存储过程会正确插入数据。

    issue tracker

    enter image description here

    TagDTO课程:

    enter image description here

    API控制器代码:

    enter image description here

1 个答案:

答案 0 :(得分:1)

确保在返回之前从db上下文中删除该对象。我相信这可以通过在db上下文中添加以下Evict方法来完成。这将使它只序列化该对象的立即值,它不会尝试序列化导航属性。

// this goes inside of your Context Object, parent class may already implement it
        public void Evict(object entity)
        {
            Entry(entity).State = EntityState.Detached;
        }

然后像这样使用它:

dbContext.Evict(entityFrameworkObject);