【发布时间】:2020-09-25 08:02:51
【问题描述】:
我有一个 Index.cshtml 页面,其中一个表包含另一个表的外键。我在我的索引中添加了一个搜索功能,但是在搜索时,它会抛出这个异常:
MySqlException:已经有一个打开的 DataReader 与此 Connection 关联,必须先关闭。
我已经运行了调试器,看起来它在我的 ActionResult 中运行良好,但是当它尝试加载视图时,它在第 11 行崩溃。我怀疑这是因为该项目是我的数据库中的外键(在模型中表示为另一个类),因为我在其他索引中添加了搜索功能并且它可以工作。我已经注释了第 11 行和第 12 行,并且不再发生异常。
我来找你是因为即使我似乎找到了问题所在,但我真的不明白为什么会发生这个异常以及如何解决它。任何帮助将不胜感激。
PS : 我使用 Microsoft Docs 中的 this 代码来实现搜索功能。
1 @foreach (var item in Model)
2 {
3 <tr>
4 <td>
5 @Html.DisplayFor(modelItem => item.nom)
6 </td>
7 <td>
8 @Html.DisplayFor(modelItem => item.adresse)
9 </td>
10 <td>
11 // @Html.DisplayFor(modelItem => item.responsable.prenom)
12 // @Html.DisplayFor(modelItem => item.responsable.nom)
13 </td>
14 <td>
15 @Html.DisplayFor(modelItem => item.telephone)
16 </td>
17 </tr>
18 }
我的控制器
// GET: cinemas
public ActionResult Index(string searchString)
{
IndexCinema_ViewModel viewModel = new IndexCinema_ViewModel();
if (!String.IsNullOrEmpty(searchString))
{
viewModel.Cinemas = db.cinemas.Where(s => s.nom.Contains(searchString)
|| s.responsable.nom.Contains(searchString)
|| s.responsable.prenom.Contains(searchString));
ViewBag.searchRequest = true;
}
else
{
viewModel.Cinemas = db.cinemas.Include(c => c.responsable);
ViewBag.searchRequest = false;
}
ModelState.Clear();
return View(viewModel);
}
【问题讨论】:
标签: asp.net-mvc