1. 程式人生 > >ABP原始碼分析十四:Entity的設計

ABP原始碼分析十四:Entity的設計

IEntity<TPrimaryKey>: 封裝了PrimaryKey:Id,這是一個泛型型別

IEntity: 封裝了PrimaryKey:Id,這是一個int型別

Entity<TPrimaryKey> :支援主鍵是泛型型別的Entity

Entity:支援主鍵是int型別的Entity

IHasCreationTime: 封裝了CreationTime

ICreationAudited: 封裝了CreatorUserId,這個是long型別

CreationAuditedEntity<TPrimaryKey> : 支援主鍵是泛型型別的Entity,並且封裝了CreationTime 和 CreatorUserId

CreationAuditedEntity: 只支援主鍵是int型別的Entity,並且封裝了CreationTime 和 CreatorUserId

ICreationAudited<TUser> :封裝了泛型型別的creator

CreationAuditedEntity<TPrimaryKey, TUser> :  支援主鍵是泛型型別,並且封裝了泛型型別的creator的Entity

ISoftDelete:封裝了軟刪除的標誌IsDeleted

IHasDeletionTime:封裝了DeletionTime

IDeletionAudited

:封裝了DeleterUserId,這個是long型別

IDeletionAudited: 封裝了泛型型別的DeleterUser

 

IHasModificationTime:封裝了LastModificationTime

IModificationAudited: 封裝了LastModifierUserId,這個是long型別

IModificationAudited<TUser> :  封裝了泛型型別的LastModifierUser

 

IAudited:從其父類介面那繼承了Creation 和 Modification 的時間和UserID,這個是long型別

AuditedEntity<TPrimaryKey> :支援主鍵是泛型型別的Entity,並且從其父類介面那繼承了Creation 和 Modification 的時間和UserID,這個是long型別

AuditedEntity: 與AuditedEntity<TPrimaryKey>的區別就是其只支援主鍵是int型別的Entity。

 

AuditedEntity<TPrimaryKey, TUser> :與AuditedEntity<TPrimaryKey>的區別就是其支援泛型型別的LastModifierUser和CreatorUser。

IAudited:從其父類介面那繼承了Creation,Modification和delete 的時間和UserID,這個是long型別

FullAuditedEntity<TPrimaryKey> :支援主鍵是泛型型別的Entity,並且從其父類介面那繼承了Creation,Modification和delete 的時間和UserID,這個是long型別

FullAuditedEntity:與FullAuditedEntity<TPrimaryKey>的區別就是其只支援主鍵是int型別的Entity

 

FullAuditedEntity<TPrimaryKey, TUser> :與FullAuditedEntity<TPrimaryKey>的區別就是其支援泛型型別的LastModifierUser,CreatorUser 和 deleteuser。

以下是最終的類層次結構。

相關推薦

ABP原始碼分析Entity設計

IEntity<TPrimaryKey>: 封裝了PrimaryKey:Id,這是一個泛型型別 IEntity: 封裝了PrimaryKey:Id,這是一個int型別 Entity<TPrimaryKey> :支援主鍵是泛型型別的Entity Entity:支援主鍵是int型別的

ABP原始碼分析DTO的設計

IDTO:空介面,用於標註Dto物件。 ComboboxItemDto:用於combobox/list中Item的DTO NameValueDto<T>/NameValueDto:用於name value鍵值對的DTO, name為string型別, value為泛型或string型別。

[Abp 原始碼分析]、DTO 自動驗證

0.簡介 在平時開發 API 介面的時候需要對前端傳入的引數進行校驗之後才能進入業務邏輯進行處理,否則一旦前端傳入一些非法/無效資料到 API 當中,輕則導致程式報錯,重則導致整個業務流程出現問題。 用過傳統 ASP.NET MVC 資料註解的同學應該知道,我們可以通過在 Model 上面指定各種資料特性,然

ABP原始碼分析DTO 自動校驗的實現

對傳給Application service物件中的方法的DTO引數,ABP都會在方法真正執行前自動完成validation(根據標註到DTO物件中的validate規則)。 ABP是如何做到的? 思路無外乎通過Castle的攔截器實現AOP。本文主要分析ABP是如何設計。 Ivalidate: 空介面,用

ABP原始碼分析本地化

本文逐個分析ABP中涉及到locaization的介面和類,以及相互之間的關係。本地化主要涉及兩個方面:一個是語言(Language)的管理,這部分相對簡單。另一個是語言對應得本地化資源(Localization)的管理,這部分稍顯複雜。 LanguageInfo:用於封裝language的基本

ABP原始碼分析Auditing

審計跟蹤(也叫審計日誌)是與安全相關的按照時間順序的記錄,它們提供了活動序列的文件證據,這些活動序列可以在任何時間影響一個特定的操作。 AuditInfo:定義如下圖中需要被Audit的資訊。 AuditedAttribute: 用於標識一個方法或一個類的所有方法都需要啟用Auditing功能

ABP原始碼分析Timing

Timing這個簡單實用的功能主要用於以統一的方式表示時間。因為ABP中有大量的module,還支援自定義module,所以將時間統一表示為local時間(預設)或utc時間是必要的。 IClockProvider:提供獲取當前時間和標準化時間的介面。 UtcClockProvider:實現了以UTC

ABP原始碼分析UI Inputs

以下圖中描述的介面和類都在Abp專案的Runtime/Validation, UI/Inputs目錄下的。在當前版本的ABP(0.83)中這些介面和類並沒有實際使用到。閱讀程式碼時可以忽略,無需浪費時間去尋找其是如何被ABP使用的(本文的目的)。 這些介面和類最終都是通過IInputType被Feature

Spring Security原始碼分析Spring Social 社交登入的繫結與解綁

社交登入又稱作社會化登入(Social Login),是指網站的使用者可以使用騰訊QQ、人人網、開心網、新浪微博、搜狐微博、騰訊微博、淘寶、豆瓣、MSN、Google等社會化媒體賬號登入該網站。 前言 在之前的Spring Social系列中,我

ABP原始碼分析Unit Of Work

ABP以AOP的方式實現UnitOfWork功能。通過UnitOfWorkRegistrar將UnitOfWorkInterceptor在某個類被註冊到IOCContainner的時候,一併新增到該類在容器中對應的ComponentModel的Interceptors集合中。總結一句話就是,UOW的功能是通過

[Abp 原始碼分析]五、自動審計記錄

0.簡介 Abp 框架為我們自帶了審計日誌功能,審計日誌可以方便地檢視每次請求介面所耗的時間,能夠幫助我們快速定位到某些效能有問題的介面。除此之外,審計日誌資訊還包含有每次呼叫介面時客戶端請求的引數資訊,客戶端的 IP 與客戶端使用的瀏覽器。有了這些資料之後,我們就可以很方便地復現介面產生 BUG 時的一些環

[Abp 原始碼分析]六、後臺作業與後臺工作者

0. 簡介 在某些時候我們可能會需要執行後臺任務,或者是執行一些週期性的任務。比如說可能每隔 1 個小時要清除某個臨時資料夾內的資料,可能使用者會要針對某一個使用者群來群發一組簡訊。前面這些就是典型的應用場景,在 Abp 框架裡面為我們準備了後臺作業和後臺工作者來幫助我們解決這個問題。 後臺作業與後臺工作者的

[Abp 原始碼分析]七、ASP.NET Core 整合

0. 簡介 整個 Abp 框架最為核心的除了 Abp 庫之外,其次就是 Abp.AspNetCore 庫了。雖然 Abp 本身是可以用於控制檯程式的,不過那樣的話 Abp 就基本沒什麼用,還是需要集合 ASP.NET Core 才能發揮它真正的作用。 在 Abp.AspNetCore 庫裡面,Abp 通過 W

[Abp 原始碼分析]一、許可權驗證

0.簡介 Abp 本身集成了一套許可權驗證體系,通過 ASP.NET Core 的過濾器與 Castle 的攔截器進行攔截請求,並進行許可權驗證。在 Abp 框架內部,許可權分為兩塊,一個是功能(Feature),一個是許可權項(Permission),在更多的時候兩者僅僅是概念不同而已,大體處理流程還是一樣

[Abp 原始碼分析]、異常處理

0.簡介 Abp 框架本身針對內部丟擲異常進行了統一攔截,並且針對不同的異常也會採取不同的處理策略。在 Abp 當中主要提供了以下幾種異常型別: 異常型別 描述 AbpException Abp 框架定義的基本異常型別,Abp 所有內部定義的異常型別都繼承自本類。 AbpInitializa

Spring Security原始碼分析Spring Security OAuth2整合JWT

Json web token (JWT), 是為了在網路應用環境間傳遞宣告而執行的一種基於JSON的開放標準(RFC 7519).該token被設計為緊湊且安全的,特別適用於分散式站點的單點登入(SSO)場景。JWT的宣告一般被用來在身份提供者和服務提供者

spring4.2.9 java專案環境下ioc原始碼分析 ()——refresh之onRefresh方法

這個方法是空的。解釋是在特定的上下文中初始化特別的beans。可以看到其也是用於初始化的。看了StaticWebApplicationContext、AbstractRefreshableWebApplicationContext、GenericWebApplicationC

Elasticsearch原始碼分析--搜尋型別

簡介query_then_fetchquery_and_fetchdfs_query_and_fetchdfs_query_then_fetchcountscan 簡介 Elasticsearch允許通過指定搜尋型別來選擇查詢在內部如何處理。不同的搜尋型別適合不同的情況;

Spring Security原始碼分析Spring Security專案實戰

Spring Security是一個能夠為基於Spring的企業應用系統提供宣告式的安全訪問控制解決方案的安全框架。它提供了一組可以在Spring應用上下文中配置的Bean,充分利用了Spring IoC,DI(控制反轉Inversion of Contr

Java設計模式()MVC設計模式

1. 應用場景 MVC設計模式廣泛應用於桌面應用程式開發和網頁頁面開發這些與使用者互動的應用場景中。 2.概念 眾所周知MVC不是設計模式,是一個比設計模式更大一點的模式,稱作設計模式不合理,應該說MVC它是一種軟體開發架構模式,它包含了很多的設計模式,最為密切是以下三種:Obs