. NET ORM Framework с контролем версий данных (медленно изменяющийся тип измерения 2)? - PullRequest
0 голосов
/ 22 апреля 2020

Я создаю приложение. NET для вставки данных (фактически, надстройка Excel) и хочу использовать ORM для вставки данных с автоматическим управлением версиями .

Вот рабочий пример:

  • Пользователь «Джон Доу» выполняет первую вставку данных (4 точки данных, как в примере ниже)
  • Позже открывается пользователь «Альберт» интерфейс, изменяет одну точку данных и сохраняет
  • Все 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 голосов
/ 05 мая 2020

Наконец-то нашел.

У NHibernate есть расширение версий, Envers.

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

Будет создано обе таблицы последней версии и версионные таблицы. Это не будет называться «медленно изменяющимся измерением», но стратегия управления версиями эквивалентна (в отличие от создания таблицы для каждой меры для версии)

Схема ниже.

Example Schema

...