如何在 entity framework 中先使用代码而不进行迁移来应用数据库架构更改

How is a database schema change applied in entity framework using code first without migrations

我现在不想使用迁移,但先编写代码。

当我使用模型构建器和 Fluent API 创建具有数据库属性的新 table 时。

怎么说"apply changes now"。当第一个查询命中数据库时是否执行更改?或者还有其他更好的方法吗?

有多个 Database Initializers 供您使用。您选择使用哪一个将取决于您的总体开发目标。

MigrateDatabaseToLatestVersion 初始值设定项是最灵活的选项,使您能够逐步添加到模型中。此 "Migration" 过程有时也称为 "Data Motion"。

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

另一个流行的初始化器是DropCreateDatabaseIfModelChanges。这是 IDatabaseInitializer 的一个实现,仅当模型自创建数据库后发生更改时,才会删除、重新创建和可选地重新播种数据库。

最后,你有 DropCreateDatabaseAlways。如您所料,这是 IDatabaseInitializer 的一个实现,它总是会在第一次在应用程序域中使用上下文时重新创建并选择性地重新播种数据库。