35

我正在使用实体框架 v4。我已按照书呆子晚餐教程中的说明进行操作. 我目前处于开发模式(未发布到任何更高的环境),并且希望在每次新部署时重新创建表,因为模型仍然高度不稳定,我不关心保留数据。但是,这不会发生。没有创建/修改表,或者数据库发生任何事情。如果我通过使用包管理器命令迁移到迁移模型:启用迁移、添加迁移(初始),这将起作用并使用我的迁移。但是,由于我还不想进行粒度迁移并且只想要我的初始创建脚本,我不得不每次都删除迁移文件夹,重做命令(启用迁移,添加迁移)并手动删除数据库我改变任何东西。

如何让代码的删除/创建行为首先发生?

4

2 回答 2

55

为您的数据库使用DropCreateDatabaseAlways初始化程序。在应用程序域中首次使用上下文期间,它将始终重新创建数据库:

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>());

实际上,如果您想为数据库播种,请创建自己的初始化程序,它将继承自DropCreateDatabaseAlways

public class MyInitializer : DropCreateDatabaseAlways<YourContextName>
{
     protected override void Seed(MagnateContext context)
     {
         // seed database here
     }
}

并在第一次使用上下文之前设置它

Database.SetInitializer(new MyInitializer());
于 2013-03-01T16:53:46.427 回答
0

如果数据库已经存在并且您想对模型进行更改,则使用DropCreateDatabaseIfModelChanges<YourContextName>

于 2016-11-29T16:44:32.193 回答