我正在尝试使用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) EF 4.2 Code First是否支持枚举类型?如果是这样,你如何使用它?使用Nuget EntityFramework包时,以下内容不会为枚举属性创建字段.
public class FooContext : DbContext
{
public IDbSet<Foo> Foos { get; set; }
}
public class Foo
{
public int Id { get; set; }
public string Name { get; set; }
public Category Category { get; set; }
}
public enum Category {One, Two, Three }
var db = new FooContext();
db.Foos.ToList();
Run Code Online (Sandbox Code Playgroud)