我正在使用Entity Framework v4。我已按照Nerd Dinner tutorial中的说明操作。我目前处于开发模式(未发布到任何更高的环境),并希望在每个新部署上重新创建表,因为模型仍然具有高度不稳定性,而且我不关心保留数据。但是,这不会发生。不会创建/修改表,也不会发生数据库中发生的任何事情。如果我使用程序包管理器命令移动到迁移模型:enable-migrations,add-migration(initial),这将起作用并使用我的迁移。但是,由于我还不想进行粒度迁移并且只想要我的初始创建脚本,因此我不得不每次都删除迁移文件夹,重做命令(enable-migrations,add-migration)并手动删除数据库我改变了什么。
如何首先获得代码的放置/创建行为?
答案 0 :(得分:51)
为您的数据库使用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());
答案 1 :(得分:0)
如果数据库已存在且您想要对模型进行更改,请使用DropCreateDatabaseIfModelChanges<YourContextName>