【问题标题】:Extending Entity Framework for storing information about queries扩展实体框架以存储有关查询的信息
【发布时间】:2017-07-17 08:17:05
【问题描述】:

我们的目标是扩展 Entity Framework,使得每次查询到原始数据库时,都会对不同的数据库进行具有相同数据的单独调用。

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

以扩展 EF 或使用特定 EF 配置的形式出现这种行为的可能性有哪些?

【问题讨论】:

    标签: c# sql sql-server database entity-framework


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多