Подтвердить что ты не робот

Хранить имена перечислений в базе данных с помощью Entity Framework

public enum Currency
  {
     EUR = 1,
     USD = 2,
     GBP = 3
   }

Скажем, у меня есть перечисление, как показано выше. Если бы я использовал это, используя Entity Framework (сначала код), значения int будут сохранены в базе данных. Таблица поиска не хранится или имена строк значений перечисления, что затрудняет прямое чтение данных базы данных.

Есть ли способ получить EF для создания таблицы поиска для перечислений?

4b9b3361

Ответ 1

Вы можете попробовать что-то вроде этого, что проще...

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);
    }
}

источник: пример Брайана Хогана

Ответ 2

Да, есть. Вам нужно будет добавить таблицу в свою конфигурацию, а затем обязательно залейте значения, которые вы хотите в таблицу, используя отражение. Впоследствии просто создайте связь FK между таблицей поиска и любыми таблицами, в которых вы используете свои перечисления, и вы должны быть установлены.

Хороший пример кодирования этого в этот пост. Это может помочь вам начать работу.