我有一个枚举:
[Flags]
public enum Role
{
Basic = 0,
A = 1,
B = 2,
C = 4,
D = 8
}
例如,我将此值存储在int
列Role
Role = A | B | C
中的数据库中,因此我使用按位运算符。
我向这个枚举添加了 2 个新值:E = 16
和 F = 32
.但是对于旧的数据库记录,我需要将这些值默认设置为 true。
我看到如何实现这一点的一种方式 - Role = old Role value + 16 + 32
的数据库迁移.正确吗?
有没有其他方法来实现这一点?
由于您的枚举的值为 2 的幂,因此您的建议似乎有效,可以安全地假设您可以使用它。
不过,某些数据库提供程序确实具有按位运算,例如:
- Mysql: https://dev.mysql.com/doc/refman/5.7/en/bit-functions.html#operator_bitwise-or