dropcreatedatabasealways不起作用,seed()方法不调用

时间:2015-11-03 20:42:13

标签: asp.net-mvc entity-framework

我很抱歉我的英语。这是我的第一个问题。对不起,我是Web开发的新手。请帮忙。

我尝试过Code First。

在我的个人用户帐户身份验证的MVC项目中,我创建了Model。

然后我为这个模型创建了Context。

然后我创建了ContextInitializer,它继承自DropCreateDatabaseAlways<>像

env CRYPTOGRAPHY_OSX_NO_LINK_FLAGS=1 LDFLAGS="$(brew --prefix openssl)/lib/libssl.a $(brew --prefix openssl)/lib/libcrypto.a" CFLAGS="-I$(brew --prefix openssl)/include" pip install cryptography

然后我在Global.Asax.cs文件中插入Application_Start()

class MusicStoreDataContextInitializer : DropCreateDatabaseAlways<MusicStoreDataContext>
{
    protected override void Seed(MusicStoreDataContext context)
    {
        Artist artist = new Artist() { Name = "First Artist" };
        context.Artists.Add(artist);
        context.Albums.Add(new Album() { Artist = artist, Title = "First Album" });
        context.Albums.Add(new Album() { Artist = artist, Title = "Second Album" });
        context.Albums.Add(new Album()
        {
            Artist = context.Artists.Add(new Artist() { Name = "Second Artist" }),
            Title = "Third Album"
        });

        context.SaveChanges();
    }
}

和My Seed()方法不起作用。当我在调试模式下在Seed()中放置断点时,程序流不会进入此Seed()方法。

我尝试在Global.Asax.cs文件中执行类似

的操作
Database.SetInitializer(new MusicStoreDataContextInitializer());

没有调用Seed()。并且表信息没有改变。

1 个答案:

答案 0 :(得分:1)

据我所知,问题是使用EF 6并使用迁移器和初始化程序。这导致了错误。

当我重新创建没有任何

的项目时
PM> Enable-Migration 
包管理器控制台中的

命令一切正常。)

重建数据库并播种新数据。

如果我的经历能帮助任何人,我会很高兴。

现在我想花更多时间更深入地了解迁移。