如何擴充 AutoHistory 記錄的欄位
- 2020-03-17
- 7088
- 0
上一篇文章介紹到了好用的 AutoHistory 受到不少人的好評(大家都喜歡省時間)而該篇文章的最後提到了擴充記錄欄位的方式,但留下了一個關鍵 Code ,有不少讀者反應不知道怎麼用,所以這篇文章就來補齊這一部份。
在文章開始之前,我們先假設你已經安裝好 AutoHistory 並且正常運作中。
上一篇文章只留下的這樣的 Code
db.EnsureAutoHistory(() => new CustomAutoHistory()
{
CustomField = "CustomValue"
});
新增擴充欄位
現在讓我們來拆解,首先你要在 OnModelCreating 裡調整
partial void OnModelCreatingPartial(ModelBuilder modelBuilder)
{
//這是原本的
//modelBuilder.EnableAutoHistory(2048);
//這是你要改的
modelBuilder.EnableAutoHistory<CustomAutoHistory>(o => { });
}
CustomAutoHistory
是新的 TableName 當然在程式內也要給他一個類別
public class CustomAutoHistory : AutoHistory
{
public string UserName { get; set; }
}
設定擴充欄位的紀錄內容
SaveChanges 就調整成這樣即可(如果你有非同步的記得也要改)
public int SaveChanges(bool ensureAutoHistory = false)
{
if (ensureAutoHistory)
{
_context.EnsureAutoHistory(() => new CustomAutoHistory()
{
UserName = _context.GetUserName()
});
}
return _context.SaveChanges();
}
_context.GetUserName()
是我寫的擴充方法,請玩家自行處理。
資料庫調整
記得你的資料庫原本叫做 AutoHistory
的那個資料表要改名成 CustomAutoHistory
,並且增加一個欄位 UserName
這樣就可以再每次觸發的時候自動存入擴充的欄位啦。
回應討論