实体框架在EF 5.0(计划很快发货)之前不会支持枚举。
Entity Framework 4.2 enum support
http://blogs.msdn.com/b/efdesign/archive/2011/06/29/enumeration-support-in-entity-framework.aspx
WCF数据服务(和oData标准)不支持枚举
我们知道枚举是常见的,不幸的是他们从未见过 酒吧到目前为止。他们对我们下一步要做的事情很重要 虽然
(参见:https://stackoverflow.com/a/3571378/141172)
我已经开始了一个新项目,正在用以下内容替换enum:
public static class MyEnum
{
public const int MyValue = 0;
public const int AnotherValue = 1;
}
我正在牺牲enum提供的保证,即只分配定义的值以便利用重要的(此时相当成熟的)基础设施服务。
有没有更好的方法来处理滞后的枚举支持?一旦EF和WCF数据服务添加枚举支持,是否有可能会出现另一个重要的框架,它将像这两个一样慢地引入枚举支持?
答案 0 :(得分:0)
比你的例子更好的是使用枚举来保存常量值并且每次都转换为int。这样你至少可以使用enum,而不是放弃一切。
枚举永远不会提供不可避免的类型安全。但是,通过尽可能地将枚举的使用扩展到应用程序代码和业务逻辑中,您可以越来越安全地防止细微的使用错误。
答案 1 :(得分:0)
您是否可以使用具有私有构造函数的结构,该构造函数为每个值定义公共静态成员:
public struct FakeEnum
{
public static readonly FakeEnum MyValue = new FakeEnum(0);
public static readonly FakeEnum AnotherValue = new FakeEnum(1);
private readonly int _value;
private FakeEnum(int value)
{
_value = value;
}
public int Value { get { return _value; } }
// TODO: Equals and GetHasCode and Operators Oh My!
}
注意:我实际上没有试过这个。