Ef code first 被代码优先迁移弄糊涂了

Ef code first 被代码优先迁移弄糊涂了,ef-code-first,entity-framework-migrations,Ef Code First,Entity Framework Migrations,最初,代码首先意味着您使用代码创建一个模型,然后它为您生成一个数据库 随着迁移,现在看起来我添加/更改了模型,然后我必须使用新的API手动描述更改 这是正确的吗?我将尝试“解开”你:) 有两个独立的组件:EntityFramework和迁移 在实体框架中创建模型,并为您生成数据库。但是,如果对模型进行更改,则需要手动更新数据库,否则EntityFramework将向您抛出错误。这就是代码优先迁移的意义所在。它可以手动或自动为您管理数据库升级 迁移是可选的,但它是一个很好的包,可以避免直接的SQL

最初,代码首先意味着您使用代码创建一个模型,然后它为您生成一个数据库

随着迁移,现在看起来我添加/更改了模型,然后我必须使用新的API手动描述更改

这是正确的吗?

我将尝试“解开”你:)

有两个独立的组件:EntityFramework和迁移

在实体框架中创建模型,并为您生成数据库。但是,如果对模型进行更改,则需要手动更新数据库,否则EntityFramework将向您抛出错误。这就是代码优先迁移的意义所在。它可以手动或自动为您管理数据库升级

迁移是可选的,但它是一个很好的包,可以避免直接的SQL交互


请参阅

事实上并不正确-但存在某些职责重叠,可能会造成混淆

稍微简化-最初的EF,代码优先并没有考虑增量代码/模型更改

迁移就是为了解决这个问题而引入的,它基本上帮助了一个典型的开发生命周期,使您的代码和模型在不同的版本中不断发展(并且考虑到了登台和生产)

迁移将
\uu MigrationHistory
表添加到数据库中,迁移是数据库、代码模型和该表之间的“树状”同步过程(用于保存和跟踪历史记录)

但是,它不会首先更改代码的性质-所有更改都会自动检测到并为您编写脚本(这是关键所在)-如果您使用
MigrateDatabaseToLatestVersion
Db初始值设定项,也会自动应用(从代码中,不带PS)

您所需要做的就是作为一名开发人员,通常期望您做的事情-在您的代码模型上设置一个“检查点”-创建一个迁移-当您真正觉得时机合适时您可以通过PS控制台执行此操作

然后,您可以通过控制台在您的开发机器或任何其他部署的机器上应用迁移,或者从代码中自动进行迁移

这是我的一篇帖子,我在这里为迁移做了一个
实践演练-可能的问题,所有这些都放在一个我能想到的地方

还是这个…