【发布时间】:2015-02-25 20:14:10
【问题描述】:
我正在尝试找到一种将权限信息存储到 SQL Server 2012 数据库中的方法。 我的权限是这样设置的:
[Flags]
public enum PermissionsB
{
Aucun = 00000000,
read = 00000001,
write= 00000010,
ssss = 00000100,
tttt = 00001000,
rrrr = 00010000,
}
而且我找不到一种方法来存储到数据库中,比如 00000011,它允许人们在我的程序中读取/写入一些东西。我确实有一个 int 列可以存储它,但还不知道如何使用它。
【问题讨论】:
-
那么这个问题只是关于在数据库中存储一个 int 值吗?或者您不知道如何将您的枚举值转换为 int?您能更具体地说明您的问题吗?
-
实际上你的二进制标志不是二进制的,你应该使用 0x 十进制数的前缀将其保存为二进制,你可以做一个 OR 操作将权限加在一起成一个二进制数和将其存储在您的数据库中
-
@CME64
0x是十六进制,而不是二进制。 -
您是否将权限用作标志,即可以组合这些值以允许读/写?如果是这样,并且根据您在 SQL 端的预期用途,您可能需要考虑单独存储这些值,以便您可以获得(更多)索引的好处。如果您通过从整数列中屏蔽它们来访问
WHERE子句中的各个位,则评估将继续 RBAR。 -
不知道如何将枚举值转换为 int 到数据库中。是的,权限被用作标志。
标签: c# database enums sql-server-2012 user-permissions