ASP.NET ZERO 學習 —— (19) 應用開發Demo之多租戶

我們已經建立了一個功能齊全的應用程序,現在,我們需要將它轉換爲多租戶應用。

啓用多租戶模式

在最初我們將多租戶模式禁用了,現在在AbpZeroTemplateCoreModule類裏重新啓用它:

Configuration.MultiTenancy.IsEnabled = true;

讓Entity適應多租戶

在多租戶應用裏,租戶的實體應該與其他租戶隔離。在這個例子中,每個租戶應該有自己的電話簿,並且不能被其他租戶看見。

當我們實現IMustHaveTenant 接口,ABP會根據當前用戶自動篩選數據,同時從數據庫中檢索業務實體。所以,我們應該定義Person實體需要實現IMustHaveTenant 接口:

[Table("PbPersons")]
public class Person : FullAuditedEntity, IMustHaveTenant
{
    public const int MaxNameLength = 32;
    public const int MaxSurnameLength = 32;
    public const int MaxEmailAddressLength = 255;

    public virtual int TenantId { get; set; }

    [Required]
    [MaxLength(MaxNameLength)]
    public virtual string Name { get; set; }

    [Required]
    [MaxLength(MaxSurnameLength)]
    public virtual string Surname { get; set; }

    [MaxLength(MaxEmailAddressLength)]
    public virtual string EmailAddress { get; set; }

    public virtual ICollection<Phone> Phones { get; set; }
}

我們可能希望讓Phone實體也實現IMustHaveTenant接口。如果我們直接使用phone repository來獲取手機信息,那這是必要的。但在這個例子中,不必這麼做。

因爲實體發生了改變,我們需要創建新的數據遷移對象:

Add-Migration "Implemented_IMustHaveTenant_For_Person"

此命令將會創建一個新的數據遷移對象,遷移類增加了自動過濾所需的註釋。我們不必知道它是什麼,因爲它是自動完成的。並且它在pbpersons表裏增加了一個tenantid欄,如下所示:

AddColumn("dbo.PbPersons", "TenantId", c => c.Int(nullable: false, defaultValue: 1));

我在最後加了一個默認值設置爲1的選項。因此,當前people將自動被標記爲默認租戶(默認租戶的ID爲1)。

現在,我們再次更新數據庫:

Update-Database

運行多租戶應用

已經搞定了!我們可以測試下這個應用,運行並進行登錄:

這裏寫圖片描述

當我們啓用了多租戶模式,我們會在登錄界面中看到多出來一個租戶名稱的輸入框。當我們不輸入它,我們將作爲管理員進行登錄。默認的admin賬號密碼爲123qwe。

登錄後,我們看到租戶列表。我們可以添加新的租戶:

這裏寫圖片描述

我創建了一個新的租戶叫NOVA。於是,租戶列表中就包含了兩個租戶:

這裏寫圖片描述

我可以註銷並以NOVA的管理員登錄:

這裏寫圖片描述

當我們登錄後,我們可以看到我們的電話簿是空的:

這裏寫圖片描述

因爲nova的電話簿信息是完全獨立的,所以這裏是空的。你可以添加信息,並且登錄不同的租戶,你可以發現不同的租戶之間的電話簿是不一樣的。

刪除SPA

如果你開發的是MPA,那麼你肯定希望在項目中刪除SPA相關文件。非常簡單:在.Web項目中,刪除以下文件及文件夾

  • 刪除App文件夾,它包含SPA的Angularjs
  • 刪除AppBundleConfigAppNavigationProvider
  • 另外,你可以刪除ApplicationController類並且改變AccountControllerHomeController 的重定向

結論

在這個DEMO中,我們建立了一個完整的例子,覆蓋了ASP.NET Zero大多數部分。希望能幫助你構建自己的應用系統。

我們故意使用不同的方法來處理類似的任務,以顯示不同的開發風格。ASPNET零提供了一個架構,但不限制你。你可以做自己的風格發展。

發佈了98 篇原創文章 · 獲贊 54 · 訪問量 20萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章