c# - 使用 Entity Framework 将 int 列映射到枚举属性

标签 c# entity-framework orm entity-framework-4.1

我有一个名为 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/

相关文章:

python - 如何在 SQLAlchemy 中加载嵌套关系?

c# - 批量消费消息——RabbitMQ

c# - 事件触发前的对象处理和垃圾收集

java - 如何在 Hibernate 中将单独的主键添加到联接表

c# - 绑定(bind)时已释放 ObjectContext 实例

.net - Entity Framework : add info to relational tables but keep EF object format

java - HIbernate 搜索不返回主键搜索结果

c# - 数据集或阅读器或什么?

c# - 是否有一些库可以帮助我在 C# 中编写 Javascript 代码?

.net - 为什么微软不在他们的产品上使用 Entity Framework ?