5

我有一个这样的枚举类型Operation

[Flags]
public enum Operation
{
    None = 0,
    View = (1 << 0),
    Add = (1 << 1),
    Edit = (1 << 2),
    Delete = (1 << 3),
    ReservedA = (1 << 4),
    ReservedB = (1 << 5),
    Admin = (View | Add | Edit | Delete)
}

并且表permission包含一operations列。该表映射到这样的类:

[Table("rolepermission")]
public class Permission : IComparable
{
    private int _id = 0;

    private Operation _operations = Operation.None;

    private List<UserRole> _roles = null;

    public Permission()
    {
        _roles = new List<UserRole>();
    }

    [Key]
    public int Id
    {
        get { return _id; }
        set { _id = value; }
    }

    [EnumDataType(typeof(Operation))]
    public Operation Operations
    {
        get { return _operations; }
        set { _operations = value; }
    }
}

但它不起作用。

有什么优雅的方法可以映射它吗?

我认为创建int-type 属性不是最好的方法。

4

1 回答 1

5

.NET 4.0 中的唯一方法是使用 int 属性持久化到数据库和非映射枚举属性,它将在内部(或在实体加载和实体持久性期间)转换 int。或者,您可以尝试包装方法

.NET 4.5 直接支持枚举,但我认为不支持标志(编辑:检查 Kamyar 的评论)。

于 2012-08-28T08:21:50.583 回答