C# EF Core MySql不显示枚举值
在我的项目中,我使用asp.net core 2.2和mysql for db。在我选择枚举值之前(使用postgre之前),它为我显示了精确的值,但现在它显示的是整数而不是值 我的启动连接: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
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
}