我在自定义授权实施中创建用户角色时遇到问题。 不幸的是,我正在处理其他应用程序使用的设计非常糟糕的遗留数据库,我真的不想重新编码数据库和其他应用程序。
下面我列出了我希望用户和UserPermissionGroup类的外观。
public class User
{
public virtual int Id { get; set; }
public virtual int Name { get; set; }
public virtual int Email { get; set; }
public virtual int Password { get; set; }
protected virtual IEnumerable<UserPermissionGroup> PermissionGroups { get; set; }
public virtual book IsInRole(string role)
{
// code to check with PermissionGroups if user is in one of the required roles
}
}
public class UserPermissionGroup
{
public virtual string Role { get; set; }
public virtual bool CanAccess { get; set; }
public virtual string SiteCode { get; set; } // optional field - depends on perm type in DB
}
不幸的是,我的(缩写)数据库结构如下:
People
{
ID (PK, int)
Name (varchar)
Email (varchar)
Password (varchar)
PeopleTypeId (FK, int)
IsSuperAdmin (bit)
IsSiteAdmin (bit)
IsUserAdmin (bit)
}
PeopleTypes
{
PeopleTypeId (PK, int)
TypeName (varchar)
}
Perm2People
{
PeopleId (PK, FK, int)
GroupID (PK, FK, int)
}
PermGroups
{
GroupID (PK, int)
GroupName (varchar)
}
Perms4Sites
{
PeopleID (PK, FK, int)
SiteCode (PK, FK, char(3))
Section (PK, char(1))
AccessLevel (int)
}
在Perms4Sites中:
我想将所有权限类型表(以及People表中的行)的映射添加到一个UserPermissionGroup类中。我只需要读取这些表 - 不需要写入数据库。
有谁知道如何将这个数据库结构的映射编写成更有用的东西,比如我上面的理想类模式?
感谢您的帮助 Saan
答案 0 :(得分:0)
我的一位同事指出我这样做太复杂了,我应该为所有映射编写一个sql视图。