带有数据版本控制(缓慢更改维度类型2)的.NET ORM Framework?

时间:2020-04-22 18:33:53

标签: .net entity-framework nhibernate orm scd

我正在构建.NET应用程序来插入数据(实际上是Excel加载项),并且我想使用ORM来插入具有自动版本控制功能的数据

这是一个可行的示例:

  • 用户“ John Doe”进行第一次数据插入(根据以下示例,为4个数据点)
  • 稍后,用户“ Albert”打开界面,修改一个数据点并保存
  • 所有4个数据点均已处理; ORM将修改后的数据标记为非当前数据,添加新数据,更新版本计数器,更改有效日期列

JOHNDOE and ALBERT insert data one after the other...

我正在寻找一个可以自动处理版本控制的ORM框架。 下面是第二次插入后的数据库表。 那些熟悉数据库模式的人会将其识别为“缓慢变化的维度(SCD)类型2”

enter image description here

不是通过ORM访问数据,而是通过各种SQL查询访问数据,因此valid_from / valid_to列是必不可少的。 我也知道这可以通过数据库触发器来完成,但是我想要一个无论后端如何都能工作的解决方案...

1 个答案:

答案 0 :(得分:0)

最后找到了东西。

NHibernate具有版本扩展名Envers。

http://www.primordialcode.com/blog/post/nhibernate-envers-quick-introduction

它将创建最后版本表和版本表。 它不会称其为“缓慢变化的维度”,但是版本控制策略是等效的(与为要度量的每个度量创建一个表相反)

下面的模式。

Example Schema