webapi2

时间:2018-05-28 19:44:42

标签: c# asp.net-mvc asp.net-web-api2

情境:

实习生可以学习多种技术

db design

enter image description here

ef view

enter image description here

结果

enter image description here

控制器代码:

 private InternEntities db = new InternEntities();

    // GET: api/Interns
    public IQueryable<Intern> GetInterns()
    {
        return db.Interns;
    }

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

这是预期的错误,原因是因为您的类型像Infinity Mirror一样互相引用。为了解决这个问题,您有几种选择。

1-您可以开发ViewModel然后序列化那个:

public class InternViewModel{
    public int Id {get; set;}
    public String Name {get; set;}
    public List<String> Tehcnologies {get; set;}
}

2-您可以选择在操作中返回实体时所需的属性:

public async Task<List<Technology>> Get() {
    var data = dbContext.Set<Technology>().Select(x=> new Technology{
        Id = x.Id,
        Name = x.Name,
        Intern= new Intern {
             Id = x.Technology.Id,
             Name = x.Technology.Name,
             Technologies = null
        }
    });
    return await data.ToListAsync();
}

3-仅加载您需要的内容,即Explicit Loading