簡體   English   中英

EF Core MySql 不顯示枚舉值

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM