gpt4 book ai didi

c# - 扩展 Entity Framework 以存储有关查询的信息

转载 作者:搜寻专家 更新时间:2023-10-30 20:50:32 24 4
gpt4 key购买 nike

我们的目标是以一种方式扩展 Entity Framework,即对于对原始数据库的每个查询,将对不同的数据库进行具有相同数据的单独调用。

此行为的目的是跟踪特定数据库上的操作历史。历史将存储在不同的数据库中,甚至可能存储在不同的服务器中。

以扩展 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();
}
}

关于c# - 扩展 Entity Framework 以存储有关查询的信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45139131/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com