先上一段最近项目中的代码,此代码可以放到自己项目中的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
(#换成@)。