gpt4 book ai didi

entity-framework - 将数据库优先迁移到代码优先 - 从发布切换到迁移

转载 作者:行者123 更新时间:2023-12-04 08:32:36 29 4
gpt4 key购买 nike

我们需要将现有项目从数据库优先迁移到代码优先。每个环境(DEV、TEST、PROD)都有一个略有不同的数据库版本。不同之处在于 DEV 中的更改可能尚未推送到 TEST 和 PROD。

——

我们正在使用 Entity Framework 6.1.3。

我们有一个 数据库项目部署数据库。发布操作将数据库与项目进行比较,并构建脚本以根据需要更改数据库。我们有一个 模型项目带有 edmx 图。我们从数据库更新 edmx,这会根据数据库中的表生成实体。

我们正在更换 模型项目 t(使用 edmx)与代码优先项目。 数据库项目将消失,我们的新代码优先项目将进行迁移。

——

我们使用 EF PowerTools 对数据库进行逆向工程并创建模型。然后我们创建一个迁移并添加创建数据库所需的语句。但是,当我们更新数据库时它会崩溃,因为表已经存在。
接下来,我们创建了一个忽略更改的迁移。现在更新数据库什么都不做。这很好,因为一切都已经存在。但是如果我需要部署到一个新的空数据库会发生什么?它不会创建任何这些对象。

更复杂的是,从 DEV 中的逆向工程师拉进来的一些对象不在 TEST 中。 TEST 中的某些表在 DEV 中可能已更改。然后PROD也可能不同。

——

我们如何从数据库优先过渡到代码优先,并且仍然拥有一个适用于所有环境并可以构建独立数据库的可靠流程?

最佳答案

我会从你的最低基线开始,可能是 PROD。将它附加到您的项目并生成迁移“初始”或其他任何内容。注释掉 Up() 代码和更新数据库。附上第二个最近的数据库,可能是 TEST。再次执行更新数据库(初始)。添加第二个迁移“TestChanges”。注释掉 Up() 代码和更新数据库。附加 DEV 数据库。应用第一个迁移(Update-Database –TargetMigration: Initial),应用第二个。现在添加迁移“DevChanges”,注释掉up代码,update-database。现在,您可以取消对迁移代码的注释或生成脚本以从以下任何一点获取:

Update-Database -Script -SourceMigration: Initial -TargetMigration: DevChanges

不过,我可能会将迁移称为更有意义的事情。

https://msdn.microsoft.com/en-us/data/jj591621#specific

关于entity-framework - 将数据库优先迁移到代码优先 - 从发布切换到迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30517070/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com