C# webapi2中的循环引用问题
情景: 实习生可以学习多种技术 数据库设计 ef视图 结果 控制器代码:C# webapi2中的循环引用问题,c#,asp.net-mvc,asp.net-web-api2,C#,Asp.net Mvc,Asp.net Web Api2,情景: 实习生可以学习多种技术 数据库设计 ef视图 结果 控制器代码: private InternEntities db = new InternEntities(); // GET: api/Interns public IQueryable<Intern> GetInterns() { return db.Interns; } 我做错了什么?这是一个预期的错误,原因是您的类型像无限镜像一样相互引用。为了解决这个问题,您有几
private InternEntities db = new InternEntities();
// GET: api/Interns
public IQueryable<Intern> GetInterns()
{
return db.Interns;
}
我做错了什么?这是一个预期的错误,原因是您的类型像无限镜像一样相互引用。为了解决这个问题,您有几种选择 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-只加载您需要的,称为显式加载