我一直在使用 MVC 中的实体框架,但我似乎遇到了关于“延迟加载”的问题。我有一个简单的 Web 应用程序,它从著名的电影数据库中抓取数据,并允许用户将这些数据保存到数据库中。我有一个 Film 类,其中包含标题、发布日期、导演等详细信息。我还有一个 Genre 类,并且我在 Film 类中有一个流派的集合。
我遇到的问题是,当我想将 IEnumerable 查询传递给视图时,我似乎无法加载流派信息。
这是电影课:
public class Film
{
[Key]
public int FilmId { get; set; }
public string FilmTitle { get; set; }
public int FilmReleaseYear { get; set; }
public string FilmDirector { get; set; }
public string FilmRating { get; set; }
public string FilmImageUrl { get; set; }
public string FilmImdbUrl { get; set; }
public virtual ICollection<Genre> FilmGenres { get; set; }
public virtual ICollection<FilmCastMember> FilmCastList { get; set; }
public virtual ICollection<FilmReview> FilmReviews { get; set; }
public Film()
{
FilmGenres = new List<Genre>();
FilmCastList = new List<FilmCastMember>();
FilmReviews = new List<FilmReview>();
}
}
这是我的流派课程:
public class Genre
{
[Key]
public int GenreId { get; set; }
public string GenreType { get; set; }
}
这是我的操作方法
public ActionResult MyFilms()
{
IEnumerable<Film> films = from film in db.Films.Include("Genres")
select film;
return View(films);
}
我遇到的问题是,当我在此方法的视图中时,我尝试使用 foreach 循环访问电影的 GenreType,但是,它没有给我那个选项。所有数据都链接在我的数据库中,所以我不确定我做错了什么。任何帮助都会很棒。
新动作方法:
public ActionResult MyFilms()
{
IEnumerable<Film> films = from film in db.Films.Include("FilmReviews").Include("FilmGenres").Include("FilmCastList")
select film;
return View(films);
}
该方法的新视图:
@model IEnumerable<MvcFilmFinder.Models.Film>
@{
ViewBag.Title = "MyFilms";
}
@foreach (var film in Model)
{
<h2>@film.FilmTitle</h2>
<img src="@film.FilmImageUrl" alt="@film.FilmTitle" />
foreach (var genre in film.FilmGenres)
{
<p>@genre.GenreType</p>
}
foreach (var genre in film.FilmGenres)
{
<p>@genre.GenreId</p>
}
foreach (var review in film.FilmReviews)
{
<p>@review.ReviewAuthor</p>
}
}