我想跟踪插件架构的变化。这是我在插件DbContext
中的代码。如果我的整个应用程序发生任何变化,我想调用此方法。
public override int SaveChanges()
{
this.Configuration.AutoDetectChangesEnabled = false;
this.Configuration.LazyLoadingEnabled = false;
this.Configuration.ProxyCreationEnabled = false;
var modifiedEntities = ChangeTracker.Entries()
.Where(e => e.State == EntityState.Added
|| e.State == EntityState.Modified
|| e.State == EntityState.Deleted).ToList();
foreach (var change in modifiedEntities)
{
var entityName = change.Entity.GetType().Name;
var primaryKey = GetPrimaryKeyValue(change);
List<Nop.Plugin.XcellenceIt.ChangeTracker.Domain.ChangeTracker> changeTrackerList = new List<Nop.Plugin.XcellenceIt.ChangeTracker.Domain.ChangeTracker>();
foreach (var prop in change.OriginalValues.PropertyNames)
{
var originalValue = change.OriginalValues[prop].ToString();
var currentValue = change.CurrentValues[prop].ToString();
if (originalValue != currentValue)
{
Nop.Plugin.XcellenceIt.ChangeTracker.Domain.ChangeTracker changeTracker = new Nop.Plugin.XcellenceIt.ChangeTracker.Domain.ChangeTracker()
{
EntityName = entityName,
PrimaryKeyValue = primaryKey.ToString(),
FieldName = prop,
OldValue = originalValue,
NewValue = currentValue,
EntityState = Convert.ToString(change.State),
DateChanged = DateTime.UtcNow
};
changeTrackerList.Add(changeTracker);
}
}
}
this.Configuration.AutoDetectChangesEnabled = true;
return base.SaveChanges();
}
我无法弄清楚这个解决方案。请帮帮我。