【发布时间】:2011-07-28 11:57:54
【问题描述】:
我面临使用 nHibernate 和 LINQ 访问桥接表以获取值的问题。 我有 4 个表,ROLES、MODULES、PERMISSIONS 和 RoleModulePermission(bridge)。
角色包含 ROLEID(pk) , ROLENAME
模块包含 MODULEID(pk) , MODULENAME
权限包含 PERMISSIONID 、 PERMISSIONTYPE
RoleModulePermission 包含 ROLEID 、 MODULEID 和 PERMISSIONID
我想根据 ROLEID 获得对 ROLES 应用的 Modules n Permission。
角色映射
Table("tblRoles");
Id(role => role.RoleID).GeneratedBy.Identity();
Map(role => role.RoleName).Not.Nullable();
Map(role => role.IsActive).Not.Nullable();
Map(role => role.Description).Not.Nullable();
HasManyToMany(x => x.Users)
.Table("tblUserInRoles")
.ParentKeyColumn("RoleID")
.ChildKeyColumn("UserID")
.Not.LazyLoad();
HasManyToMany(x => x.Modules)
.Table("tblRolesPermission")
.ParentKeyColumn("RoleID")
.ChildKeyColumn("ModuleID")
.Not.LazyLoad();
HasManyToMany(x => x.Permissions)
.Table("tblRolesPermission")
.ParentKeyColumn("RoleID")
.ChildKeyColumn("PermissionID")
.Not.LazyLoad();
模块映射
Table("tblAppModules");
Id(mod => mod.ModuleID).GeneratedBy.Identity();
Map(mod => mod.ModuleName).Nullable();
Map(mod => mod.CreationDate).Nullable();
HasManyToMany(x => x.Roles)
.Table("tblRolesPermission")
.ParentKeyColumn("ModuleID")
.ChildKeyColumn("RoleID")
.Not.LazyLoad();
权限映射
Table("tblPermission");
Id(p => p.PermissionID).GeneratedBy.Identity();
Map(p => p.PermissionType).Not.Nullable();
HasManyToMany(p => p.PermitRole)
.Table("tblRolesPermission")
.ParentKeyColumn("PermissionID")
.ChildKeyColumn("RoleID")
.Not.LazyLoad();
好像我在映射上做错了?
请不要在 tblRolesPermission 中假设“AllowAccess” 如何做到这一点?
谢谢
【问题讨论】:
-
你映射的类是什么样子的?
-
映射添加到问题
标签: asp.net-mvc linq nhibernate fluent-nhibernate