public enum Currency
{
EUR = 1,
USD = 2,
GBP = 3
}
我们说如上所示我有一个枚举。如果我使用Entity Framework(代码优先)使用它,那么int
值将存储在数据库中。不存储查找表,也不存储枚举值的字符串名称,这使得难以直接读取数据库数据。
有没有办法让EF为枚举创建查找表?
答案 0 :(得分:15)
您可以尝试这样更容易的事情......
public enum Currency
{
EUR = 1,
USD = 2,
GBP = 3
}
public class YourClassName
{
[Column("Currency")]
public string CurrencyString
{
get { return Currency.ToString(); }
private set { Currency = EnumExtensions.ParseEnum<Currency>(value); }
}
[NotMapped]
public Currency Currency;
}
public class EnumExtensions
{
public static T ParseEnum<T>(string value)
{
return (T)Enum.Parse(typeof(T), value, true);
}
}
答案 1 :(得分:2)
是的。您必须将表添加到配置中,然后确保使用反射将所需的值添加到表中。然后,只需在查找表和您使用枚举的任何表格之间创建FK关系,就应该设置。
this post中有一个很好的编码示例。这可能会帮助你开始。