Entity Framework - общее сохранение перечислений?

Попытка создать обходной путь для обработки Enum в Entity Framework с использованием Generics, но EF, похоже, не заботится об общих свойствах. Например:

public enum MyEnum
{
    One, Two, Three
}

public class SomePOCOWithEnum
{
      // I want this to persist as an int, but EF doesn't like generics.
      public EnumWrapper<MyEnum> MyEnumProperty { get; set; }
}

Намерение состоит в том, чтобы перечисление сохранялось как INT в базе данных. Есть ли какой-то особый способ использования fluent или, возможно, какого-либо другого метода механизма, с помощью которого я могу создать указанный универсальный класс и сохранить его как INT в базе данных в EF?

Намерение состоит в том, чтобы сохранить универсальность, поскольку у меня есть около двух десятков перечислений которые необходимо сохранить, и я бы предпочел не писать отдельные классы-оболочки для каждого из них.

Вот общий класс EnumWrapper, который демонстрирует, чего я хотел бы достичь: неявное преобразование в enum, но постоянство как int:

public class EnumWrapper<T> where T : struct
{
    private T enumValue;
    public int Value
    {
        get { return Convert.ToInt32(enumValue); }
        set { enumValue = (T)Enum.Parse(typeof(T), value.ToString()); }
    }

    public T EnumValue
    {
        get { return enumValue; }
        set { enumValue = value; }
    }

    public static implicit operator T(EnumWrapper<T> wt)
    {
        return wt.EnumValue;
    }

    public static implicit operator EnumWrapper<T>(T t)
    {
        return new EnumWrapper<T>() { EnumValue = t };
    }

    public override string ToString()
    {
        return enumValue.ToString();
    }
}
6
задан Dan McCann 16 October 2012 в 04:04
поделиться