首页 > 解决方案 > 在 ABP Angular 中创建新租户时已使用角色名称 Admin

问题描述

我使用了 2018 年 5 月 23 日下载的 Angular 2 + Asp.net Core 模板。

我做了什么:

  1. 将数据库从 SqlServer 更改为 MySql
  2. 更新了用于将初始化管理员名称更新为“HostAdmin”和“TenantAdmin”的种子
  3. 在管理员中创建租户
  4. 收到错误“角色名称 TenantAdmin 已被占用。” 在此处输入图像描述

我调查了创建租户的代码,在创建租户期间 CreateStaticRoles 发生了错误。

在此处输入图像描述

在这种方法中,它会创建新的角色,但这里有重复检查。我不确定为什么?以及从哪里获取 RoleManagementConfig.StaticRoles 的数据?除了 UT,我在 StaticRoles 的 ABP 源代码中找不到任何值分配参考。

编辑: 添加了Abp的重复检查逻辑,看起来总是无法通过检查,因为默认租户已经使用了静态角色名称/显示名称。 在此处输入图像描述

标签: aspnetboilerplate

解决方案


如果您在下载启动模板时选择“包括登录、注册、用户、角色和租户管理页面”,您的项目中会包含一些迁移文件。这些文件是为 SQL Server 生成的。删除 .EntityFramework 项目中 Migrations 文件夹下的所有迁移文件。迁移文件以时间戳开头。迁移文件名应如下所示

"201506210746108_AbpZero_Initial" 删除所有迁移文件后,选择你的.Web项目作为启动项目,打开Visual Studio的Package Manager Console,在Package Manager Console中选择.EntityFramework项目作为默认项目。然后运行以下命令为 MySql 添加迁移。

Add-Migration "AbpZero_Initial"

现在您可以使用以下命令创建数据库

Update-Database

您现在可以使用 MySql 运行您的项目。


推荐阅读