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。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM