当我运行网站时,我的流派不显示

问题描述

我正在使用 MVC 音乐商店作为指南创建一个在线音乐商店。

https://docs.microsoft.com/en-us/aspnet/mvc/overview/older-versions/mvc-music-store/mvc-music-store-part-4

该指南在类中使用实体框架和种子数据。

当我运行网站并导航到“商店”时,我的音乐类型不会出现。

Website

这是我的流派课程:

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
}