我想知道是否有人可以提供一些插入的審計日誌記錄實施的輸入。我需要確保它是事務性的。審計日誌記錄插入
我在下面的POCO內置的審計DbSet:
public class Audit {
public int Id { get; set; }
public User User { get; set; }
public DateTime Created { get; set; }
public string Type { get; set; }
public int EntityId { get; set; }
public string Message { get; set; }
}
我有一個DbSet,據用戶反映,當我做一個插入我想創建自動的審計DbSet添加審計實體。請看下面的代碼:
//var user = new User();
//user.Created = DateTime.Now;
//user.Username = "testuser";
//user.Password = "testpassword";
//dataContext.Users.Add(user);
var post = new Post();
post.Created = DateTime.Now;
post.Title = "A sample post";
post.Published = true;
post.Body = "Some content goes in here...";
dataContext.Posts.Add(post);
var audit = new Audit();
audit.Created = DateTime.Now;
audit.User = CurrentUser.User; // Currently logged in user
audit.Type = "Post.Add";
audit.EntityId = post.Id;
audit.Message = "New post was created";
dataContext.Audits.Add(audit);
dataContext.SaveChanges();
在這種情況下,審計的單位將被添加,但「ENTITYID」屬性將被設置爲0(默認值),而不是創建
用戶
後的身份,即身份值(SCOPE_IDENTITY()/ @@ IDENTITY)。
我想保持兩個點在一個單一的交易,而不是分裂的項目爲兩項交易,即堅持在
用戶
後,再堅持審計秒爲有機會審計可能會失敗。
什麼獲得存儲在audit.User在DB?我打賭這是新用戶的真實ID。 –
在audit.User中,我將對當前登錄用戶的引用存儲到應用程序(ASP.NET MVC) - 這樣我就可以跟蹤在系統上執行操作的人員以及日期/時間。 – benno
Ah,gotcha ...正在回答的問題 –