如何在EF 6.1.3中使用Enum Flags?

时间:2016-07-09 21:13:24

标签: c# entity-framework enums

由于我拥有的枚举标志,我认为我的查询无效。

   [Flags]
    public enum Permissions
    {
        None = 0,
        Read = 1,
        Write = 2,
        Delete = 4,
        Full = 8
    }


dbContext.UserStorages.FirstOrDefault(x => x.Permission.HasFlag(Permissions.Write));

在我的sql数据库中,该列是" int"柱。现在的值为" 8"如果我将其更改为Permissions.Full然后我将恢复记录。

1 个答案:

答案 0 :(得分:1)

Permissions.Full不应该是8而是7,如果它意味着读+写+删除。二进制

Read   -> %001
Write  -> %010
Delete -> %100
Full   -> Read | Write | Delete -> %001 | %010 | %100 -> %111 -> 7

在你的情况下,你问的是%0010中是否设置了第二位(即%1000),显然它不是。