簡體   English   中英

在實體框架中基於數據庫列值顯示枚舉文本

[英]Show enum text based on database column value in Entity Framework

我有一個映射到數據庫表的模型,在該模型中有一個枚舉屬性。 我在表列中存儲一個int值,並為此使用枚舉來管理事物(因為我的修復列表很小)。

我的問題是我想要特定數據庫列值的枚舉文本。

public class Item
{
    public int ItemId { get; set; } // ItemId (Primary key)

    [Required]
    [DisplayName("Category")]
    public int? CategoryId { get; set; } // CategoryId

    [Required]
    public string Name { get; set; } // Name (length: 100)

    [DisplayName("Item Code")]
    public string ItemCode { get; set; } // ItemCode (length: 15)

    [DisplayName("Unit Type")]
    public int? UnitId { get; set; } // UnitId
    public DateTime? UpdatedOnUtc { get; set; } // UpdatedOnUtc
    public DateTime? CreatedOnUtc { get; set; } // CreatedOnUtc

    [DisplayName("Is Active")]
    public bool IsActive { get; set; } // IsActive

    // Reverse navigation
    public virtual ICollection<GatePass> GatePasses { get; set; }
    public virtual ICollection<MoveOrderItem> MoveOrderItems { get; set; }
    public virtual ICollection<ProjectItemPrice> ProjectItemPrices { get; set; }

    // Foreign keys
    public virtual Category Category { get; set; }

    [NotMapped]
    public Enums.UnitType UnitType { get; set; }
}

我將枚舉值存儲在UnitId列中,為了顯示該值,我想顯示該枚舉/枚舉顯示屬性的文本。

我的枚舉是UnitType

public enum UnitType
{
    Set = 1,
    Km = 2,
    No = 3,
    Kg = 4,
    Mtr = 5
}

我的主要目的是管理EF查詢中的顯示,因為在EF列表中,我將具有UnitId但我想顯示UnitType的單位文本,例如kg,set,no,mtr等。

我經常在用case when as使用SQL case when as但是我不知道如何在EF中進行管理。

您可以將UnitType屬性類型更改為string ,然后讀取enum常量,如下所示:

public string UnitType 
{ 
   get
   { 
     return Enum.GetName(typeof(UnitType), UnitId); 
   } 
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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