Transactions – транзакции
<< Click to Display Table of Contents >> Объектная модель > Основные механизмы Transactions – транзакции |
Транзакция позволяет объединить несколько операций в один логический блок. При этом она может быть выполнена целиком и успешно либо не выполнена.
Для работы с транзакциями доступен класс Sungero.Core.Transaction. Доступен только в серверном коде.
Методы
Имя |
Описание |
---|---|
Execute() |
Выполнить функцию в транзакции |
Выполнить функцию в транзакции – Execute
Метод используется для запуска функции в транзакции. Доступен только в серверном коде.
При использовании метода Transactions.Execute() система выполняет команды в существующей транзакции, а если ее нет, то создает новую. Не рекомендуется использовать вложенные транзакции, т.к. попытка выполнить или откатить одну транзакцию применяется ко всей цепочке транзакций.
Синтаксис
C# |
public static bool Execute(Action func); |
Параметры
func – выполняемая функция.
Возвращаемое значение
True, если транзакция успешно завершена, иначе – false.
ВАЖНО. Если транзакция не выполнилась, то не рекомендуется повторно использовать экземпляры сущностей, которые в ней участвовали. Это может привести к непредвиденным ошибкам. Если требуется использовать эти сущности, то необходимо повторно получить их из базы данных через репозиторий.
Пример. Фоновый процесс для синхронизации абонентских ящиков
public virtual void SyncBoxes()
{
var boxes = BusinessUnitBoxes.GetAll(b => Equals(b.ConnectionStatus,
ExchangeCore.BusinessUnitBox.ConnectionStatus.Connected) ||
Equals(b.ConnectionStatus, ExchangeCore.BusinessUnitBox.
ConnectionStatus.Error)).ToList();
foreach (var box in boxes)
{
// Transactions.Execute() – метод для выполнения функции в транзакции.
// Если синхронизация абонентского ящика завершится с ошибками,
// то синхронизация следующих абонентских ящиков продолжится.
Transactions.Execute(() =>
{
Functions.BusinessUnitBox.SyncBoxStatus(box);
if (box.ConnectionStatus == ExchangeCore.BusinessUnitBox.
ConnectionStatus.Connected)
Functions.BusinessUnitBox.
UpdateExchangeServiceCertificates(box);
});
}
}
© Компания Directum, 2024 |