高雄市网站建设_网站建设公司_MongoDB_seo优化
2025/12/28 0:39:30 网站建设 项目流程

整体流程图如下:

1

 

 

RoleMenuEntity中间表的作用

预期作用:

  1. 建立多对多关系:在角色(RoleEntity)和菜单(MenuEntity)之间建立多对多关联

  2. 权限控制:记录哪些角色可以访问哪些菜单

  3. 数据解耦:将角色和菜单的关联关系独立存储

RoleMenuEntity数据表现说明

📊 数据结构示例

假设我们有:

  • 角色表 (RoleEntity):角色1(ID=1,RoleName="管理员")

  • 菜单表 (MenuEntity):菜单ID从1到9

  • 关系表 (RoleMenuEntity):记录角色1对应的9个菜单权限

var roleMenus = db.RoleMenuEntity.Where(rm => rm.RoleId == 1).Include(rm => rm.Menu).ToList();// 结果:返回9条记录,每条记录包含Menu导航属性

📋 RoleMenuEntity表中会创建9条记录:

RoleIdMenuId说明
1 1 角色1有菜单1的权限
1 2 角色1有菜单2的权限
1 3 角色1有菜单3的权限
1 4 角色1有菜单4的权限
1 5 角色1有菜单5的权限
1 6 角色1有菜单6的权限
1 7 角色1有菜单7的权限
1 8 角色1有菜单8的权限
1 9 角色1有菜单9的权限

 

 

 

[Description("菜单表")]
// 菜单-角色:多对多关系(通过RoleMenuEntity中间表)
public class MenuEntity: BaseEntity<MenuEntity,int>
{[Description("菜单名")]public string? MenuName { get; set; }[Description("URL")]public string? Url { get; set; }[Description("图标")]public string? Icon { get; set; }public int ParentId { get; set; }// 自引用关系:父子菜单
    [Navigate(nameof(ParentId))]public MenuEntity? Parent { get; set; } // 父菜单
    [Navigate(nameof(Parent))]public List<MenuEntity>? Children { get; set; } // 子菜单列表// 多对多关系:角色-菜单[Navigate(ManyToMany = typeof(RoleMenuEntity))]public List<RoleEntity>? Roles { get; set; } // 拥有该菜单的角色
}

 

[Description("角色表")]
// 角色-用户:一对多关系(一个角色有多个用户)
public class RoleEntity: BaseEntity<RoleEntity,int>
{[Description("角色名称")]public string? RoleName { get; set; }[Navigate(nameof(UserEntity.RoleId))]public List<UserEntity>? Users { get; set; }// 导航属性到用户列表
}

 

[Description("角色菜单关系表")]
//FreeSql复合主键配置:复合主键,唯一索引,不允许重复值
[Index("uk_role_menu", "RoleId,MenuId", true)]
public class RoleMenuEntity
{[Description("角色ID")]public int RoleId { get; set; }[Description("菜单ID")]public int MenuId { get; set; }[Navigate(nameof(RoleId))]public RoleEntity? Role { get; set; }[Navigate(nameof(MenuId))]public MenuEntity? Menu { get; set; }
}

 

[Description("用户实体")]    
// 用户-角色:一对多关系(一个用户属于一个角色)
public class UserEntity:BaseEntity<UserEntity,int>
{[Description("用户名称")]public string UserName { get; set; }[Description("密码")]public string Password { get; set; }[Description("昵称")]public  string NickName { get; set; }[Description("角色ID")]public int RoleId { get; set; }[Navigate(nameof(RoleId))]public RoleEntity? Role { get; set; }// 导航属性到角色
    
}

 

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询