Скажем, у меня есть база данных SCD типа II, которая в основном только добавляется. Я использую NHibernate для сохранения объектов в моей базе данных. У меня есть такой объект:
Pony
|- int Id
|- Guid EntityId
|- string PonyName
|- string PonyColor
|- int RevisionValidFrom
|- int RevisionValidTo
Вот типичный сценарий:
Pony myLittlePony = myStable.GetLatestPonyByGuid("0f1ac08a-3328-43db-b278-77c272e4fea3");
myLittlePony.PonyColor = "Fish";
myNHSession.Save(myLittlePony);
Я хочу иметь возможность вызвать Session.Save(myLittlePony)
и заставить NHibernate ОБНОВИТЬ RevisionValidTo
старого объекта до того, что я укажу, а затем ВСТАВИТЬ измененный Pony
как новую строку с новым Id
, как если бы это был новый объект, сохраняемый в БД.