一俐巴、概述
ABP實體需繼承Entity類压汪,Entity類默認定義了一個int類型的主鍵屬性Id力崇。
二斗塘、使用
2.1繼承Entity類即可
public class Person : Entity
{
public virtual string Name { get; set; }
}
三、其他
3.1 零碎知識點
- 提供了泛型Entity<T>亮靴,可改變Id的類型
- 重寫了 equality ?==? 操作符用來判斷兩個實體對象是否相等?主要是判斷兩個實體的 Id主鍵 是否相等?
- 定義了一個 IsTransient??方法來檢測當前 Id 的值是否與指定的類型的缺省值相等
3.2 接口約定
//實現(xiàn)該接口馍盟,當該實體被插入到數(shù)據(jù)庫時, ABP 會自動設(shè)置該屬性的值為當前時間茧吊。
public interface IHasCreationTime
{
DateTime CreationTime { get; set; }
}
//擴展自IHasCreationTime贞岭,擁有屬性CreatorUserId 并自動設(shè)置 屬性值為當前用戶的 Id
//ABP提供了一個實現(xiàn)該接口的類:CreationAuditedEntity
public interface ICreationAudited : IHasCreationTime
{
long? CreatorUserId { get; set; }
}
//APB 會自動設(shè)置這些屬性的值
public interface IModificationAudited
{
DateTime? LastModificationTime { get; set; }
long? LastModifierUserId { get; set; }
}
//合并兩個接口ICreationAudited, IModificationAudited
//ABP提供了一個實現(xiàn)該接口的類:AuditedEntity
public interface IAudited : ICreationAudited, IModificationAudited
{ }
//實現(xiàn)該接口,不會真正刪除搓侄,只是標記IsDeleted為刪除狀態(tài)瞄桨,同時查詢時ABP會自動過濾掉
public interface ISoftDelete
{
bool IsDeleted { get; set; }
}
//APB 會自動設(shè)置這些屬性的值
public interface IDeletionAudited : ISoftDelete
{
long? DeleterUserId { get; set; }
DateTime? DeletionTime { get; set; }
}
//ABP提供了一個實現(xiàn)該接口的類:FullAuditedEntity
public interface IFullAudited : IAudited, IDeletionAudited
{}