情境:
实习生可以学习多种技术
db design
ef view
结果
控制器代码:
private InternEntities db = new InternEntities();
// GET: api/Interns
public IQueryable<Intern> GetInterns()
{
return db.Interns;
}
我在这里做错了什么?
答案 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
。