【问题标题】:ASP.NET MVC 3 Music Store TutorialASP.NET MVC 3 音乐商店教程
【发布时间】:2014-03-18 16:08:46
【问题描述】:

我正在使用 MVC 音乐商店教程应用程序。 我更改了应用程序的 3 个原始类名(重命名),即流派、专辑和艺术家,并将它们分别命名为类别、品牌和类型。

我已经更新了所有地方的所有参考资料。因此,在此之后,我拥有的是相同的应用程序和数据库值,但具有我想要的名称。

在作为种子类的 SampleData.cs 中,当我根据我的要求向列表中添加新值时,我没有看到任何更改反映在数据库中并且在运行应用程序时再次显示相同的值。

我的种子类代码片段(仅限类别)


using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data.Entity;

namespace MvcMusicStore.Models
{
    public class SampleData : DropCreateDatabaseIfModelChanges<MusicStoreEntities>
    {
        protected override void Seed(MusicStoreEntities context)
        {
            var genres = new List<Categories>
            {
               new Categories { Name = "Guitars" },
               new Categories { Name = "Keyboards" },
               new Categories { Name = "Drums" },
               new Categories { Name="Amplifiers"}

            };

输出显示:

摇滚
古典
爵士乐
流行音乐 迪斯科
拉丁语
金属
选择 雷鬼
蓝调

等等等等。

我还认为在 EF 代码中,对种子数据的更改将动态反映在它所连接的数据库中(数据库连接工作正常)

这里需要一些指导。 提前致谢

【问题讨论】:

  • 据我所知,您没有将任何内容保存到数据库中,因此没有什么可以持久化。
  • 不,但先生,我猜在 MVC EF Code first 框架中,对种子类的任何更改都需要反映在数据库中,对吗?所有表格(即类别、品牌等)都已经存在。如果我在概念上落后于某个地方,请帮助我。已经填充了值,我正在更改上面显示的种子类中的值。
  • 当然,如果您将其添加到数据库中。现在,您只是创建了一个 Categories 列表,而没有对其进行任何操作。
  • 或者我应该将行更改为 public class SampleData : DropCreateDatabaseIfModelChanges ??

标签: c# asp.net-mvc entity-framework asp.net-mvc-4


【解决方案1】:

您需要将种子数据添加到您的数据库上下文中:

protected override void Seed(MusicStoreEntities context)
{        
    context.Categries.Add(new Categories { Name = "Guitars" });
    context.Categries.Add(new Categories { Name = "Keyboards" });
    context.Categries.Add(new Categories { Name = "Drums" });
    context.Categries.Add(new Categories { Name="Amplifiers"});

    base.Seed(context);
}

【讨论】:

  • 现在,当我直接在数据库中更改值,甚至没有在种子类中更改单个值时,网站正在获取正确的值并直接从数据库中显示。因此,在这种情况下,种子基本上没有任何作用。请问为什么会这样?
  • 很难说到底发生了什么。我不知道数据库的结构,您如何修改数据或如何检索数据。据我所知,数据应该在那里,但我不知道 EF 在这种情况下如何反应。可以肯定的是,在base.Seed(context); 之前添加context.SaveChanges()。如果这不起作用,您可能想提出一个新问题,也许有人可以向您解释。
  • 我非常想提出一个新问题,事实上它只是一个正在开发中的小问题,我可以很好地解释它以完成它。但显然我不允许这样做。(打开一个新问题)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多