zoukankan      html  css  js  c++  java
  • Abp 多租户

    Abp 的数据库Seed, 并不是Migration 的时候生成的数据,而是运行时生成的数据。这个在SeedHelper.cs 中看到。

    这样不用设置他们的ID 了,也少了迁移失败的可能麻烦。

    多租户:

    有一个超级管理员,和普通用户是一个实体类。他的TenantID是null.

    每个租户管理员是一个User, 和普通用户是一个实体类。他有Admin 这个角色。他登陆之后,可以给他的成员设置角色,也可以设为Admin.

      var adminUser = _context.Users.IgnoreQueryFilters().FirstOrDefault(u => u.TenantId == _tenantId && u.UserName == AbpUserBase.AdminUserName);
                if (adminUser == null)
                {
                    adminUser = User.CreateTenantAdminUser(_tenantId, "admin@defaulttenant.com");
                    adminUser.Password = new PasswordHasher<User>(new OptionsWrapper<PasswordHasherOptions>(new PasswordHasherOptions())).HashPassword(adminUser, "123qwe");
                    adminUser.IsEmailConfirmed = true;
                    adminUser.IsActive = true;
    
                    _context.Users.Add(adminUser);
                    _context.SaveChanges();
    
                    // Assign Admin role to admin user
                    _context.UserRoles.Add(new UserRole(_tenantId, adminUser.Id, adminRole.Id));
                    _context.SaveChanges();
                }
    

      ABP和Module-Zero假设存在一个预定义的租户,它的租户名是“Default”,且Id是1。在一个单租户的应用中,它被用作单独的租户。上面的代码就是他的实现。运行时执行!

    多租户的形式:

    单应用多数据库。

      数据库改变结构的时候,迁移麻烦

    单应用单数据库。

      维护简单,数据库比较笨重,所有数据都在一块

    单应用混合数据库。

    。。。

    ABP 支持各种组合。

    气功波(18037675651)
  • 相关阅读:
    spring对返回结果的拦截器
    mysql 8.0.15 的my.ini 配置
    利用apache 的PropertyUtilsBean 实现map和pojo相互转换
    给数字补0
    清空文件的内容 和 统计文件的大小的命令
    MySQL的replace函数的用法
    PHP Warning: Module 'modulename' already loaded in Unknown on line 0 的解决方法
    技术总监Sycx的故事
    编译PHP扩展的通用方法
    给大家推荐几本经典技术书籍
  • 原文地址:https://www.cnblogs.com/qgbo/p/12726859.html
Copyright © 2011-2022 走看看