用数据创建数据库

时间:2014-08-20 11:57:55

标签: entity-framework

我试图创建我的数据库(代码优先),我想在创建数据库时添加一些数据。

public class InitializerWithData : CreateDatabaseIfNotExists<DatabaseContext>
        {
            protected override void Seed(DatabaseContext ctx)
            {
                GroupType gt = new GroupType() { Name = "RNC" };
                //save
                ctx.GroupType.Add(gt);
                ctx.SaveChanges();
            }
        }

        public DatabaseContext()
        {
            Database.SetInitializer<DatabaseContext>(new InitializerWithData());
            Database.CreateIfNotExists();
        }

正如您所看到的,我编写了自定义初始化程序,但其中的代码从未被解雇,尽管数据库确实已创建。

那么我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

当您致电Database.CreateIfNotExists()时,它不会触发初始值设定项的InitializeDatabase。基本上它与初始化程序分开了实现。

如果您希望触发Seed方法。您需要执行导致EF将查询发送到数据库的代码。

首先删除此行。

Database.CreateIfNotExists();

然后只需执行一个查询,你可能拥有的最少就是。

using(var db = new DatabaseContext())
{
    db.Set<GroupType>().Any();
}

如果数据库不存在并执行Seed方法,则此代码将创建数据库。