如何在Code First Drop-Create模式下使用Entity Framework?

Rya*_*ton 34 entity-framework code-first

我正在使用Entity Framework v4.我遵循了书呆子晚餐教程中的说明.我目前处于开发模式(未发布到任何更高的环境),并希望在每个新部署上重新创建表,因为模型仍然具有高度不稳定性,而且我不关心保留数据.但是,这不会发生.不会创建/修改表,也不会发生数据库中发生的任何事情.如果我使用程序包管理器命令移动到迁移模型:enable-migrations,add-migration(initial),这将起作用并使用我的迁移.但是,由于我还不想进行粒度迁移并且只想要我的初始创建脚本,因此我不得不每次都删除迁移文件夹,重做命令(enable-migrations,add-migration)并手动删除数据库我改变了什么.

如何首先获得代码的放置/创建行为?

Ser*_*kiy 51

对数据库使用DropCreateDatabaseAlways初始化程序.它将始终在应用程序域中首次使用上下文时重新创建数据库:

Database.SetInitializer(new DropCreateDatabaseAlways<YourContextName>());
Run Code Online (Sandbox Code Playgroud)

实际上,如果你想为数据库设定种子,那么创建你自己的初始化器,它将继承自DropCreateDatabaseAlways:

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

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

Database.SetInitializer(new MyInitializer());
Run Code Online (Sandbox Code Playgroud)

  • @RyanLangton @lazyberezovsky,如果你在调用SetInitializer()之后直接放置它,你可以立即发生它:`Database.Initialize(false);` (5认同)