【发布时间】:2017-07-27 19:33:21
【问题描述】:
我正在建模一个数据库以在影院中插入电影和电影的会话。我知道一个剧院有很多场,一个场有电影和剧院。
public class Movie
{
public int MovieID { get; set; }
public String MovieName { get; set; }
public int Duration { get; set; }
public int Rate { get; set; }
}
public class Theater
{
public int TheaterID { get; set; }
public String TheaterName { get; set; }
public virtual ICollection<Session> Sessions { get; set; }
}
public class Session
{
public int SessionID { get; set; }
public int MovieID { get; set; }
public int TheaterID { get; set; }
public virtual Movie Movie { get; set; }
public virtual Theater Theater { get; set; }
}
我有一个接收一组会话的视图。在这个视图中,我使用一个 foreach 来显示剧院名称和其中的所有电影:
这是来自控制器的代码:
public ActionResult MoviesSessions(int id)
{
Theater theater = db.Theater.Find(id);
ViewBag.TheaterName = Theater.TheaterName;
var sessions = from s in db.Sessions where s.TheaterID == id orderby s.MovieID select s;
return View(sessions);
}
这是在视图内部:
@{
string theaterName = "";
foreach (var item in Model)
{
if (theaterName != item.Theater.TheaterName)
{
theaterName = item.Theater.TheaterName;
<tr>
<td>@Html.DisplayFor(modelItem => item.Movie.MovieName)</td>
</tr>
}
}
}
因为我使用的是item.Movie.MovieName,所以我收到以下错误:
“已经有一个打开的 DataReader 与此命令关联,必须先关闭。”
Movie 对象是否尚未填充到控制器查询中?我不明白为什么我会收到这个错误。这是我第一次使用 asp.net
【问题讨论】:
标签: c# asp.net-mvc linq session