<commit_before>---
title: "Бизнес-сервер: обновление нескольких объектов одной транзакцией"
sidebar: flexberry-orm_sidebar
keywords: Flexberry ORM, Public, Бизнес-серверы
toc: true
permalink: ru/fo_b-s-transact.html
---
* **Продукт**: [Flexberry ORM](fo_flexberry-o-r-m.html)
* **Компонент**: [Бизнес-сервер](fo_business-logic.html)
* **Программная библиотека**: ICSSoft.STORMNET.Business.dll
* **Предназначение**: Представлено, каким образом можно обновить несколько объектов в одной транзакции при применении [бизнес-сервера](fo_business-logic.html).

## Обновление нескольких объектов одной транзакцией
Если возникает необходимость обновить несколько объектов одной транзакцией (к примеру, чтобы поддержать ссылочную целостность), можно воспользоваться стандартным механизмом [бизнес-сервера](fo_business--servers--wrapper--business--facade.html).

## Использование
Для формирования транзакции используются объекты, возвращаемые методом [`OnUpdate`](b-s-example.html) любого бизнес-сервера:

* Создать \ вычитать объекты для транзакции.
* Внести необходимые изменения во все объекты для транзакции (к примеру, проставить ссылки или изменить поля).
* Добавить все объекты транзакции в массив возвращаемых методом элементов.

{ % include important.html content="Для всех объектов транзакции отработает бизнес-сервер, отвечающий за их обновление (кроме того объекта, из которого была инициирована транзакция)." %}

## Пример

![](/images/pages/products/flexberry-orm/bsexample.jpg)

Предположим, у нас есть два класса, ссылающиеся друг на друга обязательной связью. Стоит задача при создании объекта класса A автоматически создавать объект класса В и проставлять ссылки друг на друга.

## Для начала, необходимо создать бизнес-сервер для класса A и привязть его к обновлению объектов этого класса.
## В методе OnUpdate класса A необходимо написать следующий код:

```cs
var a = UpdatedObject;
var b = new B();
a.Копия = b;
b.Копия = a;

return new DataObject[2] { a, b }; 
```

Теперь, при создании объекта типа А автоматически будет создаваться его копия - объект типа В.

{% include important.html content="Обратите внимание на изменившийся `return` метода OnUpdate: именно через него формируется список элементов транзкции." % }
<commit_msg>Update flexberry-orm<commit_after>---
title: "Бизнес-сервер: обновление нескольких объектов одной транзакцией"
sidebar: flexberry-orm_sidebar
keywords: Flexberry ORM, Public, Бизнес-серверы
toc: true
permalink: ru/fo_b-s-transact.html
---
* **Продукт**: [Flexberry ORM](fo_flexberry-o-r-m.html)
* **Компонент**: [Бизнес-сервер](fo_business-logic.html)
* **Программная библиотека**: ICSSoft.STORMNET.Business.dll
* **Предназначение**: Представлено, каким образом можно обновить несколько объектов в одной транзакции при применении [бизнес-сервера](fo_business-logic.html).

## Обновление нескольких объектов одной транзакцией
Если возникает необходимость обновить несколько объектов одной транзакцией (к примеру, чтобы поддержать ссылочную целостность), можно воспользоваться стандартным механизмом [бизнес-сервера](fo_business--servers--wrapper--business--facade.html).

## Использование
Для формирования транзакции используются объекты, возвращаемые методом [`OnUpdate`](b-s-example.html) любого бизнес-сервера:

* Создать \ вычитать объекты для транзакции.
* Внести необходимые изменения во все объекты для транзакции (к примеру, проставить ссылки или изменить поля).
* Добавить все объекты транзакции в массив возвращаемых методом элементов.

{% include important.html content="Для всех объектов транзакции отработает бизнес-сервер, отвечающий за их обновление (кроме того объекта, из которого была инициирована транзакция)." %}

## Пример

![](/images/pages/products/flexberry-orm/bsexample.jpg)

Предположим, у нас есть два класса, ссылающиеся друг на друга обязательной связью. Стоит задача при создании объекта класса A автоматически создавать объект класса В и проставлять ссылки друг на друга.

## Для начала, необходимо создать бизнес-сервер для класса A и привязть его к обновлению объектов этого класса.
## В методе OnUpdate класса A необходимо написать следующий код:

```cs
var a = UpdatedObject;
var b = new B();
a.Копия = b;
b.Копия = a;

return new DataObject[2] { a, b }; 
```

Теперь, при создании объекта типа А автоматически будет создаваться его копия - объект типа В.

{% include important.html content="Обратите внимание на изменившийся `return` метода OnUpdate: именно через него формируется список элементов транзкции." %}

{'fraction_non_alphanumeric': 0.08969508123748053, 'fraction_numerical': 0.0004451368795904741, 'mean_word_length': 5.6775631500742945, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2005682', 'n_tokens_mistral': 1783, 'n_tokens_neox': 2046, 'n_words': 459}