zoukankan      html  css  js  c++  java
  • Module-Zero之租户管理

    返回《Module Zero学习目录》


    开启多租户##

    ABP和Module-Zero可以运行多租户或单租户模式。多租户默认是禁用的。我们可以在module类中的PreInitialize方法中开启它,如下所示:

    [DependsOn(typeof(AbpZeroCoreModule))]
    public class MyCoreModule : AbpModule
    {
        public override void PreInitialize()
        {
            Configuration.MultiTenancy.IsEnabled = true;
        }
    
        ...
    }
    
    

    要注意的是:即使我们的应用不是多租户,我们也必须定义一个默认的租户。
    当我们基于ABP和Module-Zero创建了一个项目模板之后,我们就得到了Tenant实体和TenantManager领域服务。

    租户实体##

    Tenant实体代表该应用的一个租户。

    public class Tenant : AbpTenant<Tenant, User>
    {
    
    }
    
    

    Tenant实体派生自泛型的AbpTenant类。Tenant实体存储在数据库中的AbpTenants表中。你可以将自定义的属性添加到Tenant类中。

    AbpTenant类定义了一些基本的属性,最重要的有这么几个:

    • TenancyName:这是一个租户在应用中唯一的名字。正常情况下,不应该改变。可以使用它来分配一些租户的子领域,如‘mytenant.mydomain.com’。TenancyNameRegex常量定义了该命名规则。
    • Name:该租户的一个随意的,人类可读的长名字。
    • IsActive:如果该租户可以使用该应用,此值为true。如果此值为false,那么禁止该租户的用户登录系统。
      AbpTenant类继承自FullAuditedEntity。这意味着它有创建,修改以及删除审计属性。同时,它还是软删除的,即当我们删除一个租户时,它并没有从数据库中删除,而是仅仅标记为已删除的状态。

    最后,AbpTenant的Id定义为Int类型。

    租户管理者##

    租户管理者是执行租户领域逻辑的服务:

    public class TenantManager : AbpTenantManager<Tenant, Role, User>
    {
        public TenantManager(IRepository<Tenant> tenantRepository)
            : base(tenantRepository)
        {
    
        }
    }
    
    

    租户管理者也用于管理租户特征。你可以在这里添加你自己的方法。你也可以重写AbpTenantManager基类中的任何方法类满足自己的需求。

    默认租户##

    ABP和Module-Zero假设存在一个预定义的租户,它的租户名是“Default”,且Id是1。在一个单租户的应用中,它被用作单独的租户。在一个多租户的应用中,你可以删除它或者标记为无效的,即IsActive字段置为false。

  • 相关阅读:
    【转】完全用Linux工作(王垠)
    PPPoE拨号设置
    sping mvc 结合 hibernate 实现用户登录功能(一)!
    MyEclipse + Maven开发Web工程的详细配置过程
    sping mvc 结合 hibernate 实现用户登录功能(三)!
    编程式事务
    struts2 结合extjs实现的一个登录实例
    tomcat使用总结
    使用Spring 2.5 和 Hibernate 3.2 开发MVC Web程序(基于annotation特性)
    如果你在买东西时
  • 原文地址:https://www.cnblogs.com/farb/p/TenantManagement.html
Copyright © 2011-2022 走看看