• 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)
  • 相关阅读:
    JavaScript 核心参考 Arguments 对象
    readonly 和 disable的区别
    Asp.net 页面导航的几种方法与比较(转)
    CSS float clear 使用
    PHP时区列表
    Jquery 父窗口中移进移出鼠标到Iframe: 移进显示更多内容, 移出隐藏部分内容
    Mysql 查看进程SQL
    好用的弹出对话框 artDialog
    In Cache 算法
    live 绑定事件会触发多次
  • 原文地址:https://www.cnblogs.com/qgbo/p/12726859.html
Copyright © 2020-2023  润新知