那权限管理的数据库表来说,假如有表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没法启动,所以没有更多代码帖上来。
        ------------------------------------------------------------------------------
posted on 2007-08-23 00:01  分享 共赢  阅读(432)  评论(0编辑  收藏  举报