在MVC项目之外重新创建和种子数据库

时间:2011-12-07 13:59:59

标签: asp.net-mvc asp.net-mvc-3 entity-framework ef-code-first

我正在为我的服务层,POCO和Repository层创建一个代码第一个MVC应用程序,其中包含一个单独的类库。在Repository层中,我有我的IRepository类的EF实现,DbContext和Entity Framework的必需引用。我的MVC项目没有引用EF。

有没有办法设置我的解决方案,以便在模型更改后重新创建数据库并播种?到目前为止,我看到的所有示例都在MVC项目的Global.asax文件中初始化,但我的MVC项目与EF无关,无法访问DbContext。

1 个答案:

答案 0 :(得分:1)

您可以在上下文的静态构造函数中注册初始值设定项:

public class MyContext : DbContext
{
    static MyContext()
    {
        Database.SetInitializer(new MyInitializer());
    }

    //...
}

使用存储库实现库中的派生初始化程序:

public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
    protected override void Seed(MyContext context)
    {
        // ...
    }
}

当您创建第一个上下文实例时将执行静态构造函数,并且当您运行查询,首次向上下文添加或附加实体等时将调用Seed,等等。