c# - 更改 Postgres 中的基础枚举值
问题描述
我有 .NET Core 应用程序,它使用实体框架与 Postgres 数据库通信。
模型中使用了一个枚举,它在 postgres 中创建了一个 Postgres 枚举类型。
现在我需要这样的迁移,它将枚举更改为标志,所以我需要在 C# 中更改枚举整数值。
我觉得我还应该更改 Postgres 中的底层枚举值,但我在那里看不到任何数字,我只在类型定义中看到枚举名称。
Postgres 如何在内部存储枚举?
如果枚举的整数值在 C# 中更改,我该如何迁移它?
解决方案
我不知道 Postgres 如何在内部存储枚举并且不喜欢依赖它。
假设您的枚举类型被调用_enumtype
并且该列被调用,_enumcolumn
那么您可以更改表结构(枚举->整数)并将数据保留在其中,如下所示:
alter table _mytable
alter column _enumcolumn type integer
using array_position(enum_range(null::_enumtype), _enumcolumn) - 1;
枚举类型的单词将分别替换为 0, 1, 2, ....。
因此,您可以在此之后自由进行所需的任何更改和更新。
推荐阅读
- laravel - 作曲家自动加载问题如何解决?
- php - $statement 执行并返回 true 但不影响 mysql 表中的任何行
- react-native - 如何在本机反应中以模态显示动态文本?
- android - 如何使用 RxJava2 + Retrofit2 一次进行多个网络调用
- gnuplot - 函数的域
- amazon-web-services - AWS Glue 作业在将作业 boomark 启用为 ON 时返回错误
- python - 使用 Nginx 和 Gunicorn 的 Flask 应用程序,使用 IP:Port 的自定义域名
- python - 有没有办法递归地只删除空子目录?
- c# - 将对象限制为几种类型
- scala - 封装在 Future 中的非阻塞 IO 请求和阻塞 IO 请求在性能上有什么区别吗?