如何在Visual C#ASP.NET MVC 4 Web应用程序中使用枚举

本文关键字:应用程序 Web 枚举 MVC Visual C#ASP NET | 更新日期: 2023-09-27 18:24:14

如何在Visual C#ASP.NET MVC 4 Web应用程序中使用enum?

我有一个mySQL数据库,其中有一个表"flight",其中包含一个使用类型enum("周一"、"周二"、"周三"、"周四"、utf8_bin

如何使Flight表的类编译/工作?在我的应用程序的模型文件中。

[Table("flight")]
public class Flight
{
    [Key,  Column(Order = 1)]
    public int id { get; set; }
    public int route { get; set; }
    public enum  flightDay { get; set; } **// How to make this work?**
    public int aircraft { get; set; }
}

如何在Visual C#ASP.NET MVC 4 Web应用程序中使用枚举

将它们存储为整数id。可选地作为Days表的外键作为代码表,以支持从SQL进行查找。

public enum Day { Monday = 1, Tuesday =2, ... }
[Table("flight")]
public class Flight
{
    [Key,  Column(Order = 1)]
    public int id { get; set; }
    public int route { get; set; }
    public int flightDayId { get; set; } 
    // Provides enum abstraction for flightDayId
    public Day FlightDay { 
      get { return (Day)flightDayId; } 
      set { flightDayId = (int)value; }
    }
    public int aircraft { get; set; }
}

sql中没有枚举对应的数据类型。因此,您必须将它作为字符串放入c#代码中,并将它(Enum.TryParse)强制转换为相应的枚举。因此,您无法使数据库实体具有enum属性,请将其更改为stiring

    string FlightDay{get;set;}

以下是的示例

public class Flight
{
    [Key,  Column(Order = 1)]
    public int id { get; set; }
    public int route { get; set; }
    public String  flightDay { get; set; } 
    public int aircraft { get; set; }
    [NotMapped]
    public FlightDays FlightDayEnum
    {
        get
        {
            FlightDays day;
            Enum.TryParse<FlightDays>(flightDay, out day);
            return day;
        }
    }
   }
    public enum FlightDays
    {
        Monday,
        Tuesday,
        Wendsday,
        Thursday,
        Friday,
        Saturday,
        Sunday
     }

在DB中,您应该将飞行日期拼写为与枚举完全相同。

在上面的示例中,"FlightDayEnum"没有映射到数据库,而是充当字符串和枚举之间的转换器。