2
目標是擴展實體框架的方式是,對於原始數據庫的每個查詢,將具有相同數據的單獨調用發送到不同的數據庫。用於存儲有關查詢的信息的擴展實體框架
此行爲的目的是跟蹤特定數據庫上的操作的歷史記錄。歷史將存儲在不同的數據庫中,甚至可能存儲在不同的服務器中。
以EF的擴展形式或使用特定的EF配置形式具有這種行爲的可能性是什麼?
目標是擴展實體框架的方式是,對於原始數據庫的每個查詢,將具有相同數據的單獨調用發送到不同的數據庫。用於存儲有關查詢的信息的擴展實體框架
此行爲的目的是跟蹤特定數據庫上的操作的歷史記錄。歷史將存儲在不同的數據庫中,甚至可能存儲在不同的服務器中。
以EF的擴展形式或使用特定的EF配置形式具有這種行爲的可能性是什麼?
EF DataContext作爲部分類實現。你可以覆蓋SaveChanges
做你需要的東西(我假設你的DataContext被稱爲EfEntities):
public partial class EfEntities
{
public override int SaveChanges()
{
var changes = from e in this.ChangeTracker.Entries()
where e.State != System.Data.Entity.EntityState.Unchanged
select e;
foreach (var change in changes)
{
if (change.State == System.Data.Entity.EntityState.Added)
{
// Handle added entities
}
else if (change.State == System.Data.Entity.EntityState.Modified)
{
// Handle modified entities
var item = change.Cast<IEntity>().Entity;
var originalValues = this.Entry(item).OriginalValues;
var currentValues = this.Entry(item).CurrentValues;
foreach (string propertyName in originalValues.PropertyNames)
{
var original = originalValues[propertyName];
var current = currentValues[propertyName];
if (!Equals(original, current))
{
// log propertyName: original --> current
}
}
}
else if (change.State == System.Data.Entity.EntityState.Deleted)
{
// Handle deleted entities
}
}
return base.SaveChanges();
}
}