我正在为我的服务层,POCO和Repository层创建一个代码第一个MVC应用程序,其中包含一个单独的类库。在Repository层中,我有我的IRepository类的EF实现,DbContext和Entity Framework的必需引用。我的MVC项目没有引用EF。
有没有办法设置我的解决方案,以便在模型更改后重新创建数据库并播种?到目前为止,我看到的所有示例都在MVC项目的Global.asax文件中初始化,但我的MVC项目与EF无关,无法访问DbContext。
答案 0 :(得分:1)
您可以在上下文的静态构造函数中注册初始值设定项:
public class MyContext : DbContext
{
static MyContext()
{
Database.SetInitializer(new MyInitializer());
}
//...
}
使用存储库实现库中的派生初始化程序:
public class MyInitializer : DropCreateDatabaseIfModelChanges<MyContext>
{
protected override void Seed(MyContext context)
{
// ...
}
}
当您创建第一个上下文实例时将执行静态构造函数,并且当您运行查询,首次向上下文添加或附加实体等时将调用Seed
,等等。