你的位置:首页 > 软件开发 > ASP.net > EF6 中tracking log使用方法总结

EF6 中tracking log使用方法总结

发布时间:2016-08-07 18:00:07
先上一段最近项目中的代码,此代码可以放到自己项目中的dbContext中public override Task<int> SaveChangesAsync() { List<AuditLog> AuditLogs = new List&l ...

    先上一段最近项目中的代码,此代码可以放到自己项目中的dbContext中

public override Task<int> SaveChangesAsync()    {      List<AuditLog> AuditLogs = new List<AuditLog>();      List<DataLensTrackingLog> trackinglogs = new List<DataLensTrackingLog>();      var changeTracker = ChangeTracker.Entries().Where(p => p.State == EntityState.Added || p.State == EntityState.Deleted || p.State == EntityState.Modified);      try      {        foreach (var entity in changeTracker)        {          AuditLogs.Clear();          = new if (entity.Entity != null)          {            var entityName = ObjectContext.GetObjectType(entity.Entity.GetType()).Name;            //get='_blank'>string entityName = entity.Entity.GetType().Name;            EntityState state = entity.State;            switch (entity.State)            {              case EntityState.Modified:                //entityName = ObjectContext.GetObjectType(entity.Entity.GetType()).Name;                foreach (string prop in entity.OriginalValues.PropertyNames)                {                  object currentValue = entity.CurrentValues[prop];                  object originalValue = entity.GetDatabaseValues()[prop];//OriginalValues[prop];                  if (!Object.Equals(currentValue, originalValue)&&entity.Property(prop).IsModified==true                    &&prop.ToLower()!="lastupdateby")                  {                    AuditLogs.Add(new AuditLog                    {                      EntityName = entityName,                      RecordID = PrimaryKeyValue(entity),                      State = state,                      ColumnName = prop,                      OriginalValue = Convert.ToString(originalValue),                      NewValue = Convert.ToString(currentValue),                    });                  }                }                if (AuditLogs.Count > 0)                {                  TrackingLog.Getnew DataLensTrackingLog                  {                    EntityName = entityName,                    Email = this.Email,                    = CompressionHelper.Compresse("", new UTF8Encoding().GetBytes(doc.Outer= DateTime.Now                  });                }                break;              case EntityState.Added:                //entityName = ObjectContext.GetObjectType(entity.Entity.GetType()).Name;                foreach (string prop in entity.CurrentValues.PropertyNames)                {                  AuditLogs.Add(new AuditLog                  {                    EntityName = entityName,                    RecordID = PrimaryKeyValue(entity),                    State = state,                    ColumnName = prop,                    OriginalValue = string.Empty,                    NewValue = entity.CurrentValues[prop],                  });                }                TrackingLog.Getnew DataLensTrackingLog                {                  EntityName = entityName,                  Email = this.Email,                  = CompressionHelper.Compresse("", new UTF8Encoding().GetBytes(doc.Outer= DateTime.Now                });                break;              case EntityState.Deleted:                //entityName = ObjectContext.GetObjectType(entity.Entity.GetType()).Name;                foreach (string prop in entity.OriginalValues.PropertyNames)                {                  AuditLogs.Add(new AuditLog                  {                    EntityName = entityName,                    RecordID = PrimaryKeyValue(entity),                    State = state,                    ColumnName = prop,                    OriginalValue = entity.OriginalValues[prop],                    NewValue = string.Empty,                  });                }                TrackingLog.Getnew DataLensTrackingLog                {                  EntityName = entityName,                  Email = this.Email,                  = CompressionHelper.Compresse("", new UTF8Encoding().GetBytes(doc.Outer= DateTime.Now                });                break;              default:                break;            }          }        }        DataTable dt=TypeConvert.ToDataTable(trackinglogs);        SqlDataHelper.SqlBulkCopy(dt, "DataLensTrackingLog", DataBaseType.ConnLogDataStr);        return base.SaveChangesAsync();      }      catch (Exception ex)      {        throw ex;      }    }


 

海外公司注册、海外银行开户、跨境平台代入驻、VAT、EPR等知识和在线办理:https://www.xlkjsw.com

原标题:EF6 中tracking log使用方法总结

关键词:

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

可能感兴趣文章

我的浏览记录