public abstract class Entity where T : class
{
public int ID { get; }
public byte[] TimeStamp { get; }
public bool IsNew { get; }
public void Validate() { ValidateAction(); }
public void Save() { SaveAction(); }
public void Delete() { DeleteAction(); }
protected abstract void ValidateAction();
protected abstract void SaveAction();
protected abstract void DeleteAction();
}
EntityExtension 靜態類,存放 IQueryable、IEntityDataAccess 擴充方法。IDatabase、IEntityDataAccess 定義資料存取契約,供 DataAccess 實作。
模板方法模式封裝驗證/儲存/刪除流程,子類僅實作具體行為,結構清晰且可測試。