demoshop

demo, trying to be the best_

上一篇文章介紹到了好用的 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 這樣就可以再每次觸發的時候自動存入擴充的欄位啦。

回應討論