[英]EF Core MySql does not show enum values
在我的項目中,我使用 asp.net core 2.2 和 mysql for db。 在我選擇枚舉值之前(在使用 postgre 之前)它為我顯示了確切的值,但現在它顯示的是整數而不是值。
我的啟動連接:
services.AddDbContext<AppDbContext>(x =>
x.UseMySql(Configuration.GetConnectionString("LibvirtConnection"))
.ConfigureWarnings(warnings => warnings.Ignore(CoreEventId.IncludeIgnoredWarning)));
我的選擇聲明:
[HttpGet]
public IActionResult GetVMs()
{
var model =
from vm in _context.VirtualMachines
join project in _context.Projects on vm.ProjectId equals project.Id
join hypervisor in _context.Hypervisors on vm.HypervisorId equals
hypervisor.HypervisorId
join managment in _context.Managements on vm.ManagementId equals managment.Id
select new
{
Id = vm.Id,
Name = vm.Name,
IpAddress = vm.IpAddress,
DiskSize = vm.DiskSize,
Cpu = vm.CPU,
Ram = vm.Ram,
ImageUrl = vm.ImageUrl,
Role = vm.Role.ToString(),
Status = vm.Status.ToString(),
Project = project.Name,
Hypervisor = hypervisor.Name,
Gateway = managment.Gateway,
Netmask = managment.Netmask
};
return Ok(model);
}
我得到了結果:
{
"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
}
它應該是角色和地位的實際值。
問題是 Enum 上的ToString()
使用默認格式說明符"D"
,它打印 Enum 值后面的數字,但是當手動指定格式為"G"
, ToString("G")
方法返回名稱因為它是在源代碼中編寫的,因此應該可以解決您的問題,請將.ToString()
替換為.ToString("G")
所以:
Role = vm.Role.ToString("G"),
Status = vm.Status.ToString("G")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.