Существует ли механизм обхода/отключения перехватчиков изменения версионируемых сущностей? Необходимо изменить актуальную версию, не создавая новой.
Тип сущности приходит в функцию в качестве параметра, поэтому используются не generic версии методов.
Пытался сделать так:
var changedEntityVersioningManagement = dataStore.GetAll(mainEntityTypeManagement).Cast();
var allVersions = await changedEntityVersioningManagement.Where(x => x.VersionMetaId == changeRecord.ChangedEntityId).ToListAsync();
// В результате - эксепшн System.NotSupportedException: ‘query ( query ( select_from ( from ( range Bars.Aispd.FpResultDistributionVersioningManagement x001 ) ) ( select x001 ) ) ( where ( and ( == ‘/requestFromInterceptedDataStore/’ ‘/requestFromInterceptedDataStore/’ ) ( == ( . x VersionMetaId ) ( : p1 ) ) ) ) )’
И даже так:
var verIdColumn = GetQuotedColumnName(dialect, entPc.IdentifierProperty.ColumnIterator.Single().Text);
property.SetValue(changedEntity, newValue);var column = entPc.PropertyIterator.FirstOrDefault(x => x.Name == property.Name); if (column != null) { var columnName = ((NHibernate.Mapping.Column)column.ColumnIterator.First()).Name; if (mainEntityTypeManagement != null) { StringBuilder sqlBuilder = new StringBuilder(); sqlBuilder.AppendFormat(@" update public.{0} set {2} = {3} where {4} = {1} and version_actual_period_end > now() ", tableName, changeRecord.ChangedEntityId, columnName, newValue, verIdColumn); var deleteResult = _sessionProvider .GetCurrentSession() .CreateSQLQuery(sqlBuilder.ToString()) .ExecuteUpdate(); } }
// В результате тоже ошибка
Пытался даже через CreateSQLQuery скриптом убивать новую созданную версию и восстанавливать старую, зная что она точно будет, но адекватного результата не добился.