这个问题与this有关:
我的存储库方法具有以下代码:
public IEnumerable<ApplicationPositionHistory> GetApplicationPositionHistories(int applicantId, int positionId)
{
return context.ApplicationsPositionHistory.Where(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId).Include(o => o.applicantPosition) ;
}
我的 HTML 有这个代码:
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.applicantPosition.Applicant.name)
</td>
<td>
@Html.DisplayFor(modelItem => item.applicantPosition.Position.name)
</td>
完整的异常(exception)是:
已经有一个与此命令关联的打开的 DataReader,必须先关闭它。
它被扔在 HTML 的第一行
@Html.DisplayFor(modelItem => item.applicantPosition.Applicant.name)
最佳答案
快速解决方案:
public IEnumerable<ApplicationPositionHistory> GetApplicationPositionHistories(int applicantId, int positionId)
{
return context.ApplicationsPositionHistory.Where(d => d.applicantPosition.ApplicantID == applicantId && d.applicantPosition.PositionID == positionId).Include(o => o.applicantPosition).ToList() ;
}
如果您想知道为什么这可以解决您的问题,请阅读有关 LINQ 和 的信息。延期执行 作品。简而言之 - 如果您不通过 ToList 的“枚举”查询“强制”执行选择,实际上它执行得太晚了 - 在 View 中。这给想要使用相同连接的其他查询带来了麻烦。
关于asp.net-mvc - Entity Framework : There is already an open DataReader associated with this Command which must be closed first,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7927990/