我目前正在使用实体框架(我知道它还不是最稳定的平台)开发一个使用数据库优先方法的 Web API 项目,但我遇到了一些非常奇怪的事情。
当我的 APIController 中的 GET 方法尝试使用涉及的 LINQ Include() 方法返回 DbSet 中的所有记录时,它将返回 500 错误:
// GET api/Casinos
public IEnumerable<casino> Getcasinos()
{
var casinos = db.casinos.Include(c => c.city).Include(c => c.state);
return casinos.AsEnumerable();
}
然而,这个方法工作正常,并从我的数据库中返回我的数据:
// GET api/States
public IEnumerable<state> Getstates()
{
return db.states.AsEnumerable();
}
因此,我已经在其他情况下证明,如果它返回没有 LINQ 查询的实体,它的效果很好,但是当在 DbContext 上使用 Include 方法时,它会失败。
当然,试图找到这个错误是不可能的,即使使用 Fiddler、Chrome/Firefox 开发工具,并添加GlobalConfiguration.Configuration.IncludeErrorDetailPolicy = IncludeErrorDetailPolicy.Always;
如果有人解决了这个问题,很高兴知道一个好的解决方案,这样我就可以开始返回我的数据了!谢谢!:)
PS 我正在使用 SQL Server 2012