由于我拥有的枚举标志,我认为我的查询无效。
[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然后我将恢复记录。
答案 0 :(得分:1)
Permissions.Full
不应该是8而是7,如果它意味着读+写+删除。二进制
Read -> %001
Write -> %010
Delete -> %100
Full -> Read | Write | Delete -> %001 | %010 | %100 -> %111 -> 7
在你的情况下,你问的是%0010
中是否设置了第二位(即%1000
),显然它不是。