首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将添加所需外键列的实体框架迁移应用到现有数据库?

问如何将添加所需外键列的实体框架迁移应用到现有数据库?
EN

Stack Overflow用户
提问于 2022-08-12 21:29:33
回答 1查看 120关注 0票数 2

我正在使用一个名为C#的IdentityServer4库。它有自己的一组实体框架DbContext对象。每次发布新版本的IdentityServer4时,您都应该创建一个新的实体框架迁移,并将其应用到数据库中。

我创造了迁移。迁移包含许多新列,包括需要有效引用的外键。

当将这种迁移应用到我现有的数据库中时,由于这些新列没有数据,因而破坏了外键关系要求,迁移失败了。

实体框架是否有针对这类迁移应用程序的推荐策略?我不能在应用迁移时删除所有的数据。

如何使用实体框架迁移来应用这些新列?

EN

回答 1

Stack Overflow用户

发布于 2022-08-12 21:49:30

通常,您提供一个合理的默认值。如果这是不可能的,您可能必须编辑这些模型对象才能不那么严格,然后创建另一个迁移,使您有一个合理的缺省值(或创建这些对象),然后再进行另一个迁移,以使模型与IdentityServer4的最新版本兼容。

编辑:

  1. 我要遵循的基本过程是创建迁移(但还没有应用)

  1. 编辑为在没有外键的情况下生成它而创建的迁移,并使用可空字段

  1. 创建另一个空迁移并对其进行编辑,以使用一些SQL向受影响的字段

添加有效值。

  1. 添加另一个迁移(可能从空迁移开始),并添加迁移代码,通过将字段更改为非空并添加外键.

,将其提升到当前的IdentityServer模型规范。

这是一个繁琐的过程,需要进行一些尝试和错误,所以保持数据库的备份,如果您有多个正在使用此应用程序的数据库(比如几个客户或测试数据库),也要对这些数据库进行一些备份,并在这些数据库上尝试此方法,直到在部署/发布代码之前它能够正常工作为止。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73339956

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档