EF 6 SetInitializer应该删除所有表吗?

时间:2015-06-29 19:50:26

标签: entity-framework

我正在尝试学习EF 6 Code First。通过在线教程,我去为一个类添加一个简单的字符串属性。然后我将代码添加到global.asax,Application_Start方法来更新数据库。

Database.SetInitializer(New DropCreateDatabaseIfModelChanges(Of myDBContext))

我虽然这只会重新创建该上下文中引用的表。但是,所有表(包括我手动创建的aspnet表和表)都被杀死了。并且只重新创建了在此上下文中引用的那些。我做错了什么?另外,我不能使用迁移中的Update-Database命令更新数据库吗?

1 个答案:

答案 0 :(得分:1)

初始化程序未被调用" DropCreate IfModelChanges",它会删除整个数据库然后创建一个新的空数据库并开始从头开始填充它

你可能想要初始化程序CreateDatabaseIfNotExists,如果一个数据库不存在,它将创建一个数据库但是如果存在,它将不会删除它。但是,使用这种方法,您需要enable migrations,以便您的代码知道在看到旧版本的数据库时要做什么,并知道执行它的命令,以便从旧版本的架构更新到新版本的架构。

相关问题