首页 > 解决方案 > Returning enum name when returning records from a database

问题描述

I have this Enum:

public enum TravelBy
    {
        AirPlain = 0,
        Ship=1,
        Train=2,
         Bicycle=3,
        Car = 4,
        Walk=5
    }

I want to return enum names when returning a record from the database.

For example, returning record for TravelBy 5 and I need to fill the property of model by Walk.

This is my model:

public class ListTravelRequest
{
    private readonly TravelBy travelby;
    private readonly SendTravelRequestStatus sendTravelRequestStatus;

    public int Id { get; set; }
    public int UserId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Destination { get; set; }
    public bool Owner { get; set; }
    public bool YouSend { get; set; }
    public string Resident { get; set; }
    public string RequestStatus
    {
        get
        {
            return sendTravelRequestStatus.ToDisplay();
        }
        set
        {

        }
    }
    public string TravelBy
    {
        get
        {
            return travelby.GetEnumName();
        }
        set
        {

        }
    }

    public string PeriodDate
    {
        get
        {
            return EndTravel.DiffDay(StartTravel).TotalDays.ToString();
        }
    }
    public DateTimeOffset StartTravel { get; set; }
    public DateTimeOffset EndTravel { get; set; }
    public decimal TravelCosts { get; set; }
}

But my problem is the following, for all records, it return first item in Enum AirPlain but when I check it in database it 5.

标签: c#asp.netasp.net-core

解决方案


  1. 使travelby可变(现在已标记readonly
  2. 添加一个setter,如下:set { travelby = (TravelBy)Enum.Parse(typeof(TravelBy), value); }

推荐阅读