具有数据版本控制的 .NET ORM Framework(缓慢变化的维度类型 2)?
.NET ORM Framework with data versioning (Slowly Changing Dimension Type 2)?
我正在构建一个用于插入数据的 .NET 应用程序(实际上是一个 Excel 加载项),我想使用 ORM 来插入数据 具有自动版本控制.
这是一个有效的例子:
- 用户 "John Doe" 执行第一个数据插入(4 个数据点,如下例所示)
- 稍后,用户"Albert"打开界面,修改一个数据点,保存
- 处理完所有4个数据点; ORM 将修改后的数据标记为非当前数据,添加新数据,更新版本计数器,更改有效期列
我正在寻找一个可以自动处理版本控制的 ORM 框架。
下面是第二次插入后的数据库 table。
熟悉数据库模式的人会将其识别为 "Slowly Changing Dimension (SCD) Type 2"
数据将不是通过 ORM 访问,而是通过各种 SQL 查询访问,因此 valid_from/valid_to 列是必不可少的。
我也知道这可以通过数据库触发器来完成,但我想要一个无论后端如何都能工作的解决方案...
终于找到东西了。
NHibernate 有一个版本控制扩展,Envers。
http://www.primordialcode.com/blog/post/nhibernate-envers-quick-introduction
它将创建最新版本 table 和版本化 table。
它不会将其称为 "Slowly Changing Dimension",但版本控制策略是等效的(而不是为每个度量创建一个 table 到版本)
架构如下。
我正在构建一个用于插入数据的 .NET 应用程序(实际上是一个 Excel 加载项),我想使用 ORM 来插入数据 具有自动版本控制.
这是一个有效的例子:
- 用户 "John Doe" 执行第一个数据插入(4 个数据点,如下例所示)
- 稍后,用户"Albert"打开界面,修改一个数据点,保存
- 处理完所有4个数据点; ORM 将修改后的数据标记为非当前数据,添加新数据,更新版本计数器,更改有效期列
我正在寻找一个可以自动处理版本控制的 ORM 框架。 下面是第二次插入后的数据库 table。 熟悉数据库模式的人会将其识别为 "Slowly Changing Dimension (SCD) Type 2"
数据将不是通过 ORM 访问,而是通过各种 SQL 查询访问,因此 valid_from/valid_to 列是必不可少的。 我也知道这可以通过数据库触发器来完成,但我想要一个无论后端如何都能工作的解决方案...
终于找到东西了。
NHibernate 有一个版本控制扩展,Envers。
http://www.primordialcode.com/blog/post/nhibernate-envers-quick-introduction
它将创建最新版本 table 和版本化 table。 它不会将其称为 "Slowly Changing Dimension",但版本控制策略是等效的(而不是为每个度量创建一个 table 到版本)
架构如下。