gpt4 book ai didi

entity-framework - 与 EF Code First 迁移持续集成

转载 作者:行者123 更新时间:2023-12-03 15:01:50 27 4
gpt4 key购买 nike

我想知道我是否可以完全自动化代码优先迁移以实现持续集成。

目前我的持续集成 只是简单地更新代码更改,但是,我手动 生成迁移 ,并更新我的持续集成服务器上的数据库。

生成迁移并自动更新数据库是否可靠/可能/推荐?

例如:

我有属性 userId 和用户名的用户。然后我将属性年龄添加到代码中。当前方案需要我创建一个迁移来捕获此更改,然后我将我的更改 checkin 到版本控制中。持续集成将发现这种变化,并将部署新版本。我必须手动更新数据库(应该是自动化的)。

我是否也可以跳过迁移的生成,这样我可以简单地将属性年龄添加到代码中,持续集成将生成此迁移。不确定这是否被推荐。

最佳答案

答案是肯定的,但不是你描述的那样。

您必须并且应该手动生成迁移。并非所有迁移都可以自动创建,在这些情况下,需要手动修改生成的迁移。列拆分、某些类型的数据类型更改等。

然后,您的 CI 服务器可以利用 migrate.exe 使您的数据库与您的模型同步。棘手的部分是处理导致降级的迁移。所以从 v1 到 v2 很容易,但从 v2 回到 v1 比较棘手,因为只有 v2 程序集知道如何“回到”到 v1。

我最终创建了一个自定义工具,它智能地执行迁移并自动确定要用于迁移的模型(上下文)程序集。您可以在此处了解如何执行此操作:EF Code First Migrations to Deploy Older Version

最终结果是我可以 checkin 模型更改/迁移,并且知道我的数据库更改将自动部署到属于我的 ci/cd 管道的任何环境 - 是的,这绝对包括生产。

关于entity-framework - 与 EF Code First 迁移持续集成,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11616772/

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