Добрый день всем.

Использовал такую конструкцию

insert.Set(ColumnName, Column.SqlText($"( NEXT VALUE FOR [dbo].[" + SequenceName + "])"));

Чтобы вставлять в инсерте значения из последовательности. Сейчас такая конструкция не работает так как после обновления Column.SqlText() считается устаревшим.

Необходимо вставлять значения именно и вставляю в большом количестве. Триггер на БД не подходит, так как не всегда нужно это делать.

Есть ли альтернативы для применения такой схемы?

Нравится

1 комментарий

Добрый день,

 

В теории тригер можно написать так, чтобы он не запускался для всех записей. Но, можно пойти и другим путём:

Terrasoft.Core.DB.Sequence sequence = new Terrasoft.Core.DB.Sequence(UserConnection, "CountBy1");
int result = sequence.GetNextValue();
Set<int>("SeqResult", result);
return true;

Этот код я использовал в тестовой скрипт-таске для проверки получения следующего значения sequence и его увеличения. Действительно, он работает, увеличивает значение и берет его же (нужно заменить CountBy1 на название Вашего sequence). То есть в Вашем коде нужно взять result и прокинуть в аргумент Set метода и будет ровно точно тот же результат, что и при использовании Column.SqlText. 

Показать все комментарии