C# EF Core MySql不显示枚举值

C# EF Core MySql不显示枚举值,c#,mysql,asp.net-core,enums,ef-core-2.2,C#,Mysql,Asp.net Core,Enums,Ef Core 2.2,在我的项目中,我使用asp.net core 2.2和mysql for db。在我选择枚举值之前(使用postgre之前),它为我显示了精确的值,但现在它显示的是整数而不是值 我的启动连接: services.AddDbContext<AppDbContext>(x => x.UseMySql(Configuration.GetConnectionString("LibvirtConnection")) .ConfigureWar

在我的项目中,我使用asp.net core 2.2和mysql for db。在我选择枚举值之前(使用postgre之前),它为我显示了精确的值,但现在它显示的是整数而不是值

我的启动连接:

 services.AddDbContext<AppDbContext>(x => 
     x.UseMySql(Configuration.GetConnectionString("LibvirtConnection"))
                .ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.IncludeIgnoredWarning)));
我得到了结果:

{
    "id": 1,
    "name": "kubernetesvm",
    "ipAddress": "185.22.98.7",
    "diskSize": 500,
    "cpu": 24,
    "ram": 500,
    "imageUrl": "https://www.google.com",
    "role": "1",
    "status": "0",
    "project": "avengers",
    "hypervisor": "kubernetes",
    "gateway": "vh10",
    "netmask": 24
}

它应该是角色和状态的实际值。

问题在于枚举上的
ToString()
使用默认格式说明符
“D”
,它打印枚举值后面的数字,但在手动将格式指定为
“G”
时,使用
ToString(“G”)
方法返回在源代码中写入的名称,这样可以解决您的问题,将
.ToString()
替换为
.ToString(“G”)

因此:

Role=vm.Role.ToString(“G”),
Status=vm.Status.ToString(“G”)

是否检查mySql表以查看列是varchar还是int@Jawad它是整数,也是迁移使用的整数,在使用postgre之前它工作得很好。您确定
0
在您的枚举中吗?什么数据类型是
vm。角色
尝试通过给出
“G”手动指定枚举的
ToString
上的格式
作为参数
{
    "id": 1,
    "name": "kubernetesvm",
    "ipAddress": "185.22.98.7",
    "diskSize": 500,
    "cpu": 24,
    "ram": 500,
    "imageUrl": "https://www.google.com",
    "role": "1",
    "status": "0",
    "project": "avengers",
    "hypervisor": "kubernetes",
    "gateway": "vh10",
    "netmask": 24
}