如何在没有迁移的情况下首先使用代码在实体框架中应用数据库模式更改

时间:2015-03-17 21:54:12

标签: entity-framework entity-framework-6 entity-framework-6.1

我现在不想使用迁移,而是首先使用代码。

当我使用modelbuilder和Fluent API创建一个包含数据库属性的新表时。

我如何说"现在应用更改"。当第一个查询到达数据库时是否执行了更改?或者还有其他更好的方法吗?

1 个答案:

答案 0 :(得分:2)

您可以使用多个Database Initializers。您选择使用哪一种取决于您的总体发展目标。

MigrateDatabaseToLatestVersion初始值设定项是您最灵活的选项,可让您逐步添加到模型中。这"迁移"过程有时也被称为" Data Motion"。

您可以使用的另一个选项是CreateDatabaseIfNotExists,这是默认策略。在此策略中,第一次访问需要数据库访问的任何类时,如果数据库不存在,将创建数据库。如果数据库已存在,则不会发生任何事情。如果数据库的模式与模型不匹配,则事务将失败并将引发错误。

另一种流行的初始化程序是DropCreateDatabaseIfModelChanges。这是IDatabaseInitializer的实现,只有在创建数据库后模型已更改时,才会删除,重新创建和重新设置数据库种子。

最后,您有DropCreateDatabaseAlways。正如您所料,这是IDatabaseInitializer的实现,它将在第一次在应用程序域中使用上下文时始终重新创建并重新设置数据库种子。