NHibernate Envers 喜欢使用实体框架 6+ 进行审计日志

2024-04-21

每当更新/删除实体时,NHibernate Envers 都能很好地创建审核日志。基本上,它为每个可审计实体创建一个审计表,并将数据快照写入审计表中。例如如果客户记录保存在 CUSTOMER 表中,则客户记录的审核日志将保存在 CUSTOMER_AUD 表中。

在我的一个项目中,我们使用实体框架 6.1。我搜索并查看了各种替代方案,例如审计数据库上下文 http://auditdbcontext.codeplex.com/documentation and 实体框架扩展 https://github.com/loresoft/EntityFramework.Extended#audit-log但它们都没有提供类似于 NHibernate Envers 的开箱即用解决方案。

我认为生成审核日志应该是一个非常常见的要求,所以我的问题是,EF 6+ 是否有任何开箱即用的解决方案可以生成类似于 NHibernate Envers 的审核日志?


我最终使用以下方法实现了一个自定义解决方案审计数据库上下文 http://auditdbcontext.codeplex.com/documentation.

基本上,我使用审计数据库上下文 http://auditdbcontext.codeplex.com/documentation跟踪哪些属性已更改,然后使用它来将信息写入审核表。审计表与主表完全一致,并带有两个附加列:

  • REV_TYPE - 表示修订类型可以是添加/更新/删除
  • REV_ID - 指示该行的唯一修订 ID。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NHibernate Envers 喜欢使用实体框架 6+ 进行审计日志 的相关文章

随机推荐

  • Delphi - 检测我的应用程序是否打开了模式对话框

    我有一个 Delphi 2006 应用程序 当检测到错误情况时 它会弹出模式警报对话框 由于对错误条件的检查是在空闲处理程序中完成的 因此如果恰好显示了另一个模式对话框 则该对话框可能会在另一个模式对话框的顶部弹出 这可能会导致用户感到困惑
  • 从 PostgreSQL 数据库检索评论

    我正在 Postgres 数据库上运行一个项目 需要检索数据库中列的注释以用作表标题等 我已经看到有几个内置函数 pg 描述 http www postgresql org docs 9 1 static catalog pg descri
  • ruby/rails:扩展或包含其他模块

    我将模块分开 以便它们更易于阅读和搜索 lib features running rb walking rb features rb 他们有 lib features running rb module Features Running e
  • 奇怪的Java时区日期转换问题

    我想转换ms since 1970 timestamp到带有时区的日期 德国 这里有两种有效的代码变体 至少 我记得使用过它并且它有效 import java text SimpleDateFormat import java util C
  • jQuery异步函数调用,无AJAX请求

    这看起来很愚蠢 但我找不到如何使用 jQuery 进行不涉及某些服务器端请求的异步函数调用 我有一个缓慢的函数 它会遍历大量 DOM 元素 并且我希望浏览器在该函数运行时不会冻结 我想在调用慢速函数之前显示一个小指示器 然后当慢速函数返回时
  • excel+powerpoint 如何决定重新缩放粘贴为图像的范围?

    我注意到 当您复制 Excel 中的范围 复制为图片 如屏幕所示 并将其粘贴到 PowerPoint 中时 生成的图像不会 100 缩放为原始图像 右键单击图像 转到格式设置并转到尺寸以查看比例信息 此外 这种缩放比例在不同的计算机上有所不
  • 如何使用 C API 创建 datetime64 对象的 Numpy 数组?

    我需要从 C C 代码创建 numpy datetime64 对象的数组 正如你所看到的NPY LONGLONG and NPY VOID我做到了 我需要做同样的事情NPY DATETIME type PyObject arr1 PyArr
  • 在 Javascript/jQuery 中从数组中删除多个元素

    我有两个数组 第一个数组包含一些值 而第二个数组包含应从第一个数组中删除的值的索引 例如 var valuesArr new Array v1 v2 v3 v4 v5 var removeValFromIndex new Array 0 2
  • 从头开始一个 TDD 项目

    我读了很多关于 TDD 的问答和关于 SO 的单元测试 但我没有找到任何答案 我从哪里开始 我和团队已经完成了几个项目 在这些项目中 我们对代码采用了单元测试 但先编码 然后单元测试 在开发过程的某个阶段 先编写测试然后编写代码变得很自然
  • Manatee.Trello 移动卡片

    我正在编写一个小型应用程序来管理 Trello Boards 的几个方面 例如对列表中的卡片进行排序 根据截止日期和 或标签移动 复制卡片 定期归档列表以及根据标签生成报告 因此 我一直在 Manatee Trello 库周围构建一个外观
  • Picasso 加载 AsyncTask 内生成的图像

    所以我正在尝试使用毕加索图书馆 http square github io picasso 用于图像下载和缓存 为了让 contactUri 传递给Picasso我需要向联系人查询Content Provider 由于我不想阻止主 UI 线
  • ETL 工具...它们到底做什么?请通俗地说[关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我最近接触了一些 ETL 工具 例如 Talend 和 Apatar 我想知道这些工具通俗地说的用途 主要目标到底是什么 谁主要使用它
  • UICollectionView 断言失败

    我在执行时遇到此错误insertItemsAtIndexPaths in UICollectionView 断言失败 UICollectionViewData indexPathForItemAtGlobalIndex SourceCach
  • java.time中,月份相加的结果是如何计算的?

    在 JSR 310 中java timeJDK 8中的API 日期加月份结果的计算规则是什么 特别是 当您向 1 月 31 日这样的日期添加 1 个月时会发生什么 LocalDate initial LocalDate of 2012 1
  • UglifyJS 和 webpack v5

    我们的 React 代码一直使用 UglifyJS 和 webpack v4 但随后更新为 webpack v5 看来 UglifyJS 不适用于 webpack v5 还有其他选择吗 我们需要一些可以与 babel loader 配合使用
  • Cygwin git 将错误的路径传递给我的编辑器以获取提交消息

    我在 cygwin 下使用 git 但它没有将提交消息的正确路径传递给我的编辑器 我正在位于我的驱动器上的测试存储库中工作 d X git myproject 在 cygwin 终端中 该路径显示为 cygdrive d X git myp
  • 在 KQL azure 显示器中显示今天、昨天、一周的最佳方式

    我试图显示今天的计数 9 滚动 24 小时 与昨天 再次滚动 对比每周平均值 虽然我已经有了可以工作的代码 但我也遇到了错误 错误是 查询成功 但有警告 处理查询时出现一些错误 部分查询失败 未指定的错误 消息 分片 5eeb9282 08
  • 未找到入口点

    当我尝试运行链接到 DLL 的应用程序 我有一段时间没有更改代码 因为它工作正常 时 遇到了一个奇怪的错误 这个 DLL 曾经可以工作 但我一直在更改 DLL 的代码并使其编译正常 不幸的是 当尝试运行该应用程序时 GameTest001
  • 如何解压或获取存储在 Azure DevOps Build Piplines 变量组中的嵌套变量的值?

    是否可以在 Powershell 脚本中的变量内使用 Azure Pipelines 变量 SCENARIO Azure Pipelines 变量组中设置了两个变量 DeploymentCredentials a DeployUATApiP
  • NHibernate Envers 喜欢使用实体框架 6+ 进行审计日志

    每当更新 删除实体时 NHibernate Envers 都能很好地创建审核日志 基本上 它为每个可审计实体创建一个审计表 并将数据快照写入审计表中 例如如果客户记录保存在 CUSTOMER 表中 则客户记录的审核日志将保存在 CUSTOM