实体框架代码优先:使用控制台应用程序初始化数据库

时间:2012-04-17 03:58:03

标签: entity-framework code-first

我正在尝试运行初始化代码但它没有运行。这是我在main方法中的内容

    static void Main(string[] args)
    {
        Database.SetInitializer<Context>(new RecipesSeedData());

    }

我是否应该在main中添加其他内容以使其运行以下代码 ?当我逐步调试调试器中的代码时,它甚至没有进入初始化代码,这让我觉得我错过了一些重要的东西。

public class RecipesSeedData : DropCreateDatabaseAlways<Context>
{
    protected override void Seed(Context context)
    {
        var mt = new MenuType {MenuTypeId = 1};

        context.MenuTypes.Add(mt);

        base.Seed(context);
    }
}

1 个答案:

答案 0 :(得分:7)

您刚刚告诉EF,在初始化数据库时,它需要使用您的初始化程序,但您没有告诉它实际初始化数据库。在DbContext上执行某些操作时,将初始化数据库。这篇文章很精确地描述了幕后发生的事情:http://blog.oneunicorn.com/2011/04/15/code-first-inside-dbcontext-initialization/(包括有关DbInitializers的详细信息)