小编Nat*_*ock的帖子

EF 4.1 Code First - 将枚举包装器映射为复杂类型

我正在尝试使用EF 4.1构建枚举问题的通用解决方案.我的解决方案基本上是如何在ef 4中伪造枚举的通用版本.枚举包装类在其余代码中运行得非常好,并允许以下代码:

EnumWrapper<Color> c = Color.Red;
Run Code Online (Sandbox Code Playgroud)

这是枚举包装类:

public class EnumWrapper<TEnum> where TEnum : struct, IConvertible
{
    public EnumWrapper()
    {
        if (!typeof(TEnum).IsEnum)
            throw new ArgumentException("Not an enum");
    }

    public TEnum Enum { get; set; }

    public int Value
    {
        get { return Convert.ToInt32(Enum); }
        set { Enum = (TEnum)(object)value; }
    }

    public static implicit operator TEnum(EnumWrapper<TEnum> w)
    {
        if (w == null) return default(TEnum);
        else return w.Enum;
    }

    public static implicit operator EnumWrapper<TEnum>(TEnum e)
    {
        return new EnumWrapper<TEnum>() …
Run Code Online (Sandbox Code Playgroud)

.net entity-framework ef-code-first entity-framework-4.1

15
推荐指数
2
解决办法
9256
查看次数