如何在sql server中创建Audit表?我需要创建每个审计表或可以管理单个表的所有审计

时间:2016-07-28 08:00:28

标签: sql-server asp.net-mvc database entity-framework

我正在使用MVC5。创建了实体框架。我有15张桌子。现在我想在我的项目中进行最近的活动。我有计划使用审计表。我需要创建审计每个表或单个表可以管理吗?审计表内部有哪些字段?

我有TP_users表

SELECT state_cd
    , SUBSTRING(state_cd,1,1) As Parent0
    , CASE WHEN state_cd Like '__[^0]_' THEN SUBSTRING(state_cd,2,2) ELSE '' END As Parent1
    , CASE WHEN state_cd Like '___[^0]' THEN SUBSTRING(state_cd,4,1) ELSE '' END As Parent2
FROM yourTable

现在我想创建审计表TP_users表.whare是审计表里面的字段吗?如何使用Audit表实体框架?

2 个答案:

答案 0 :(得分:1)

我们使用如下的实体:

public class Audit
{
    [Required]
    [StringLength(6)]
    public string Action { get; set; }
    public string Changes { get; set; }
    public string PK { get; set; }
    [Required]
    public DateTime RevisionStamp { get; set; }
    [Required]
    [StringLength(50)]
    public string TableName { get; set; }
    [Required]
    [StringLength(50)]
    public string Username { get; set; }
}

我们使用它来审核所有表格。 Action属性表示发生了什么类型的更改,例如“更新”,“插入”或“删除”。更改前后的列值将作为JSON保存在Changes列中,如下所示:

[{"FieldName":"ID","ValueBefore":"2","ValueAfter":"2"},{"FieldName":"SettingTypeIndex","ValueBefore":"FiscalYear","ValueAfter":"FiscalYear"},{"FieldName":"Value","ValueBefore":"2015","ValueAfter":"2016"},{"FieldName":"Year","ValueBefore":"0","ValueAfter":"0"},{"FieldName":"DateInserted","ValueBefore":"2016-04-11 8:45:08 AM","ValueAfter":"2016-04-11 8:45:08 AM"},{"FieldName":"DateModified","ValueBefore":"2016-07-28 9:45:46 AM","ValueAfter":"2016-07-28 9:47:17 AM"},{"FieldName":"CreatorUserID","ValueBefore":"b44792db-1fbd-44d2-9f7d-cf05c6a2f922","ValueAfter":"b44792db-1fbd-44d2-9f7d-cf05c6a2f922"},{"FieldName":"UpdaterUserID","ValueBefore":"b44792db-1fbd-44d2-9f7d-cf05c6a2f922","ValueAfter":"b44792db-1fbd-44d2-9f7d-cf05c6a2f922"}]

所以这样我们就可以拥有回滚功能(如果需要的话)。已更改记录的主键保存在PK属性中。更改日期保存在RevisionStamp属性中,最后表名和用户名分别保存在TableNameUsername属性中。当然,这个实体映射到数据库中的表,数据保存在该表中。

如果您使用的是entityframework,则可以覆盖DbContext.SaveChanges()方法并获取所有ChangeTracker.Entries().Where(e=>e.State != EntityState.Unchanged)项,并使用这些项创建审核数据。

答案 1 :(得分:0)

在这里你可以寻求帮助 1. http://www.4guysfromrolla.com/webtech/041807-1.shtml