我有一个映射到数据库表的模型,我在该模型中有一个枚举属性。我在表列中存储int
值,并使用枚举管理事物(因为我有一个小的修复列表)。
我的问题是我想要特定db列值的枚举文本。
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中完成这些工作,但我不知道如何在EF中管理。
答案 0 :(得分:3)
您可以将UnitType
属性类型更改为string
,然后阅读enum
常量,如下所示:
public string UnitType
{
get
{
return Enum.GetName(typeof(UnitType), UnitId);
}
}