问题描述
我正在使用 MVC 音乐商店作为指南创建一个在线音乐商店。
该指南在类中使用实体框架和种子数据。
当我运行网站并导航到“商店”时,我的音乐类型不会出现。
这是我的流派课程:
public partial class Genre
{
public int GenreId { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public List<Album> Albums { get; set; }
}
这是我的实体框架数据库上下文:
public class MusicStoreEntities : DbContext
{
public MusicStoreEntities()
: base("name=MusicStoreEntities")
{
}
public DbSet<Album> Albums { get; set; }
public DbSet<Genre> Genres { get; set; }
}
}
这是我的商店控制器:
public class StoreController : Controller
{
MusicStoreEntities storeDB = new MusicStoreEntities();
//
// GET: /Store/
public ActionResult Index()
{
var genres = storeDB.Genres.ToList();
return View(genres);
}
//
// GET: /Store/browse
//
// GET: /Store/browse?genre=disco
public ActionResult browse(string genre)
{
var genreModel = new Genre { Name = genre };
return View(genreModel);
}
//
// GET: /Store/Details/5
public ActionResult Details(int id)
{
var album = new Album { Title = "Album " + id };
return View(album);
}
}
}
这是我的种子数据:
public class MusicData : DropCreateDatabaseIfModelChanges<MusicStoreEntities>
{
protected override void Seed(MusicStoreEntities context)
{
var genres = new List<Genre>
{
new Genre { Name = "Rock" },new Genre { Name = "Jazz" },new Genre { Name = "R&B" },new Genre { Name = "Alternative" },new Genre { Name = "Reggae" },new Genre { Name = "Blues" },new Genre { Name = "Latin" },new Genre { Name = "Pop" },new Genre { Name = "Hip Hop" }
};
var artists = new List<Artist>
{
new Artist { Name = "Arthur Verocai" },new Artist { Name = "Free Nationals" },new Artist { Name = "Marvin Gaye" },new Artist { Name = "Thundercat" },new Artist { Name = "Nas" },new Artist { Name = "D'Angelo" },new Artist { Name = "Bob Marley" },new Artist { Name = "Freddie Gibbs" },new Artist { Name = "Solange KNowles" },new Artist { Name = "Kendrick Lamar" },new Artist { Name = "Madvillain" },new Artist { Name = "Prince" },new Artist { Name = "Hector Lavoe" },new Artist { Name = "Wayne Shorter" },new Artist { Name = "Muddy Waters" },new Artist { Name = "howlin wolf" },new Artist { Name = "Jamiroquai" },new Artist { Name = "Barrington Levy" },new Artist { Name = "Stevie Wonder" },new Artist { Name = "Jimi Hendrix" },new Artist { Name = "Pink Floyd" },new Artist { Name = "Outkast" },new Artist { Name = "Jay-Z" },new Artist { Name = "The Internet" },new Artist { Name = "Lupe Fiasco" },new Artist { Name = "Tyler,The Creator " }
};
new List<Album>
{
new Album { Title = "Arthur Verocai",Genre = genres.Single(g => g.Name == "Latin"),Price = 25.99M,Artist = artists.Single(a => a.Name == "Arthur Verocai"),albumartUrl = "/Content/Images/placeholder.gif" },new Album { Title = "No Voo do Urubu",Price = 31.99M,new Album { Title = "Free Nationals",Genre = genres.Single(g => g.Name == "Alternative"),Price = 8.99M,Artist = artists.Single(a => a.Name == "Free Nationals"),new Album { Title = "I Want You",Genre = genres.Single(g => g.Name == "R&B"),Price = 21.99M,Artist = artists.Single(a => a.Name == "Marvin Gaye"),new Album { Title = "Let's Get It On",Price = 17.99M,new Album { Title = "What's Going On ",Price = 11.99M,new Album { Title = "It Is What It Is",Artist = artists.Single(a => a.Name == "Thundercat"),new Album { Title = "Drunk",new Album { Title = "It Was Written",Genre = genres.Single(g => g.Name == "Hip Hop"),Artist = artists.Single(a => a.Name == "Nas"),new Album { Title = "Life Is Good",new Album { Title = "brown Sugar",Artist = artists.Single(a => a.Name == "D'Angelo"),new Album { Title = "Voodoo",Price = 22.99M,new Album { Title = "Legend",Genre = genres.Single(g => g.Name == "Reggae"),Artist = artists.Single(a => a.Name == "Bob Marley"),new Album { Title = "Uprising",new Album { Title = "Exodus",new Album { Title = "Bandana",Price = 8.98M,Artist = artists.Single(a => a.Name == "Freddie Gibbs"),new Album { Title = "Pinata",Price = 19.99M,new Album { Title = "Freddie",new Album { Title = "A Seat at the Table ",Price = 18.99M,Artist = artists.Single(a => a.Name == "Solange KNowles"),new Album { Title = "When I Get Home ",new Album { Title = "To Pimp A Butterfly",Price = 29.99M,Artist = artists.Single(a => a.Name == "Kendrick Lamar"),new Album { Title = "damn",new Album { Title = "Madvillainy",Artist = artists.Single(a => a.Name == "Madvillain"),new Album { Title = "Prince",Genre = genres.Single(g => g.Name == "Pop"),Price = 27.99M,Artist = artists.Single(a => a.Name == "Prince"),new Album { Title = "HITNRUN Phase Two",new Album { Title = " Purple Rain",new Album { Title = "Sign O The Times",new Album { Title = "De Ti Dipende",Artist = artists.Single(a => a.Name == "Hector Lavoe"),new Album { Title = "La Voz",new Album { Title = "Comedia",new Album { Title = "Speak No Evil ",Genre = genres.Single(g => g.Name == "Jazz"),Artist = artists.Single(a => a.Name == "Wayne Shorter"),new Album { Title = "Night Dreamer",new Album { Title = "Juju",new Album { Title = "Hoochie Coochie Man",Genre = genres.Single(g => g.Name == "Blues"),Artist = artists.Single(a => a.Name == "Muddy Waters"),new Album { Title = "Muddy Waters At Newport ",new Album { Title = "Moanin In The Moonlight ",Price = 16.99M,Artist = artists.Single(a => a.Name == "howlin wolf"),new Album { Title = "Travelling Without Moving",Artist = artists.Single(a => a.Name == "Jamiroquai"),new Album { Title = "synkronized",new Album { Title = "Return Of The Space Cowboy",new Album { Title = "Acousticalevy",Price = 15.99M,Artist = artists.Single(a => a.Name == "Barrington Levy"),new Album { Title = "Here I Come by Barrington Levy",new Album { Title = "Songs in the Key of Life",Artist = artists.Single(a => a.Name == "Stevie Wonder"),new Album { Title = "Innervisions",new Album { Title = "Talking Book (Remastered)",new Album { Title = "Electric Ladyland",Genre = genres.Single(g => g.Name == "Rock"),Artist = artists.Single(a => a.Name == "Jimi Hendrix"),new Album { Title = "Band Of Gypsys",new Album { Title = "The Dark Side of the Moon",Artist = artists.Single(a => a.Name == "Pink Floyd"),new Album { Title = "The Wall",new Album { Title = "Aquemini",Price = 38.99M,Artist = artists.Single(a => a.Name == "Outkast"),new Album { Title = "ATLiens",Price = 23.99M,new Album { Title = "The Blueprint",Artist = artists.Single(a => a.Name == "Jay-Z"),new Album { Title = "Feel Good",Artist = artists.Single(a => a.Name == "The Internet"),new Album { Title = "Ego Death",new Album { Title = "Lupe Fiasco's Food & Liquor ",Artist = artists.Single(a => a.Name == "Lupe Fiasco"),new Album { Title = "Wolf ",Artist = artists.Single(a => a.Name == "Tyler,The Creator "),}.ForEach(a => context.Albums.Add(a));
}
}
}
这是该视图的 Index.cshtml 代码:
@model IEnumerable<WaxloversOnline.Models.Genre>
@{
ViewBag.Title = "Store";
}
<h3>browse Genres</h3>
<p>
Select from @Model.Count()
genres:
</p>
<ul>
@foreach (var genre in Model)
{
<li>
@Html.ActionLink(genre.Name,"browse",new { genre = genre.Name })
</li>
}
</ul>
当我运行程序时,我没有收到任何错误。我对使用 C# 比较陌生。任何帮助都会得到极大的认可。
解决方法
您需要在 System.Data.Entity.Database.SetInitializer(new MusicData());
中添加 Application_Start()
,如下所示。参考https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-4#adding-our-store-catalog-data
protected void Application_Start()
{
// Add below line
System.Data.Entity.Database.SetInitializer(new MusicData());
// Your code
}