现在的位置: 首页 > 综合 > 正文

重拾枚举:应用位标志并应用到数据库表查询

2012年07月22日 ⁄ 综合 ⁄ 共 795字 ⁄ 字号 评论关闭

        那权限管理的数据库表来说,假如有表User,Permission,表示一个用户有N个角色,一般有两种处理办法:
        1)添加一个UserPermissions表,保存User和Permission的主键,如asp.net安装的数据库。
        2)在User表中添加一个字段,如Permissions,保存内容如1,2,3,4。
        对于第二种处理方法的好处是减少一个表,但查询应该有点麻烦:字符分拆?使用like?

        对于第二种方法,如果应用枚举,则建立一个Permissions枚举,并应用位标志:

    [Flags]
    public enum Permissions
    {
        View 
= 1,
        Add 
= 2,
        Edit 
= 4,
        Delete 
= 8,
        All 
= View | Add | Edit | Delete
    }

        Permission表中的数据跟Permissions中的枚举的数值一致。
        那么将Permissions修改为int类型,保存到数据库里时取Permissions的int值,如 Permissions.Add | Permissions.Edit,则其值为6。
        搜索时,如搜索具有Permissions.Add权限的用户,可以使用select * from user where Permissions&2=2类似的语句,感觉比较方便了。
        由于sql2005express没法启动,所以没有更多代码帖上来。
        ------------------------------------------------------------------------------

抱歉!评论已关闭.