扩展实体框架以存储有关查询的信息

珠子

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

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

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

罗曼诺·祖贝(RomanoZumbé)

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

播放框架-存储有关当前请求的信息

有关SQL查询的信息,用php存储

实体框架核心-如何提取有关基础SQL语法的详细信息?

实体框架核心3.1-有关命令和事务的日志信息

存储有关结构的信息/参考

实体框架-“更新条目时发生错误。有关详细信息,请参见内部异常”

需要有关实体框架预测的帮助

添加日志以存储有关用户操作JavaScript的信息

有关硬/软链接的信息存储在哪里?

GCP-获取有关存储桶的完整信息

在视图中存储有关项目的永久信息

有关磁盘可用空间的信息存储在哪里?

在Dspace中存储有关用户的其他信息

查询有关范围npm包的特定版本的信息

在Flask中查询有关url_for的信息

实体框架扩展递归查询

提取dbpedia页面中列出的命名实体,但没有有关它们的信息

有关AltBeacon的查询

有关Pyside的查询

实体框架中有关数据的where子句缺少列

实体框架核心TPH继承2与其他模型有关的子类

在运行时获取有关实体的休眠信息

存储有关RichTextBox文本的所有信息并重建它-C#WinForms

在哪里可以找到有关vulkan实例层和扩展的信息?

如何获取有关“错误加载扩展名”的更多信息?

如何在 Postgres 中显示有关已创建扩展的信息?

如何打开扩展名为pcxm的文件并获取有关它们的详细信息

如何在MacOS Catalina中获取有关旧版系统扩展的更多信息?

如何查询与一项有关的所有信息?