我有一个名为 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
类型的属性不是最好的方法。
最佳答案
.NET 4.0 中的唯一方法是使用持久保存到数据库的 int 属性和非映射枚举属性,后者将在内部(或在实体加载和实体持久性期间)转换 int。或者你可以尝试 wrapper approach .
.NET 4.5 直接支持枚举但我认为不支持标志(编辑:查看 Kamyar 的评论)。
关于c# - 使用 Entity Framework 将 int 列映射到枚举属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12154207/