实体框架“代码优先”不播种或创建数据库 - 没有错误

时间:2011-08-10 18:45:01

标签: entity-framework ef-code-first

由于某种原因,我的数据库没有被创建,我没有收到任何错误。我正在使用“SQL Server”

在global.asax.ca文件中初始化数据库:

protected void Application_Start(object sender, EventArgs e)
{
     //BREAKPOINT HITS. GOOD
     Database.SetInitializer<MenuManagerContext>(new MenuManagerServiceInitializer()); 
}

...

public class MenuManagerServiceInitializer : CreateDatabaseIfNotExists<MenuManagerContext>
{
    //BREAKPOINT NEVER HITS. BAD
    protected override void Seed(MenuManagerContext context)
    {
        context.Chains.Add(...);

        context.SaveChanges();

        base.Seed(context);
    }
}

为什么没有创建数据库的想法?我甚至没有收到错误,所以很难说出错了......

2 个答案:

答案 0 :(得分:8)

Database.SetInitializer不会导致创建数据库。它只设置初始化策略。

如果您是第一次使用上下文,则会创建数据库,例如通过发出任何查询,或者将对象附加或添加到上下文,等等。

答案 1 :(得分:1)

调用通过上下文返回数据的Action

public ActionResult Index()
{
    //should trigger call to MenuManagerServiceInitializer.Seed()
    return View(new MenuManagerContext().Chains.ToList())
}