[英]Extending Entity Framework for storing information about queries
目的是以一種方式擴展Entity Framework,以便對原始數據庫的每個查詢都將對相同的數據進行單獨的調用,以對另一個DB進行調用。
此行為的目的是跟蹤特定數據庫上的操作歷史記錄。 歷史記錄將存儲在其他數據庫中,甚至可能存儲在其他服務器中。
以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();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.