gpt4 book ai didi

c# - 如何在对模型进行更改后更新数据库快照以匹配数据库

转载 作者:搜寻专家 更新时间:2023-10-30 22:34:18 24 4
gpt4 key购买 nike

使用 Entity Framework 6.1.3。和代码优先。

我目前在自己的分支机构工作,但使用的是开发数据库。另一位开发人员一直在主分支工作,并在我分支后向开发数据库应用了一些迁移。我通过添加额外的字段对我分支中的一些模型进行了一些更改;我修改的这些模型的表已经存在于数据库中(除了 1 个新模型)。

我分支中的当前快照不是当前实际的数据库架构。通常我会执行 Add-Migration Merge -IgnoreChanges 来让我了解最新情况,然后进行更改。 (正确吗?)

问题是我所做的更改仍然需要应用于数据库,执行上述命令会忽略这些更改。当我构建一个新的迁移时生成的代码试图撤消(删除/更改)在主分支上应用的所有迁移,并且它目前还看到我已对其进行更改的所有模型(以及其他一些模型) 作为新表并尝试创建新表而不是添加新列。

解决这个问题的最佳方法是什么?是否有可能首先避免这种情况?

我在想我可以将主分支合并到我的分支中以进行迁移,但不确定这是否能解决我的问题。

生成的任何迁移在应用于我们的生产数据库时也需要正常工作。

希望我已经解释得够清楚了。我对 EF 还是很陌生,所以我们将不胜感激。

最佳答案

今天发生在我身上的事情是我基本上丢失了整个迁移文件夹,所以没有迁移文件,没有快照文件,什么都没有。我想对数据库做一些更新(在表上添加一个新列)。所以我遵循了这些步骤并最终让它工作(包管理器控制台中的命令):

  1. Add-Migration temp - 这将生成一个迁移文件(它将重新创建整个数据库)和快照文件。显然这个快照文件对应于当前的数据库状态;
  2. 删除迁移文件,不是通过键入 Remove-Migration(因为这也会删除快照文件),而是直接删除文件(例如,在解决方案资源管理器中)。此时我有当前快照,没有迁移;
  3. Add-Migration new_column_etc - 通过添加这个迁移,因为我有一个快照可以与之比较,它实际上生成得很好并且只显示了我所做的更改(以及我所做的打算首先在数据库中更新);
  4. Update-Database - 现在我更新了我的数据库并且快照文件对应于最新版本。

我知道它可能与最初的要求有点偏差,但在绝望的情况下,它可以提供一种方法来为当前版本的数据库重新生成快照文件。

关于c# - 如何在对模型进行更改后更新数据库快照以匹配数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39412034/

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