Предки: TssParamDataSet -> TssDataSet.
Цель данного класса – предоставлять возможность запроса многопоточных данных через сервер приложений, редактирования этих данных с кэшированием результатов редактирования и сохранения результатов редактирования через сервер приложений.
Настройки для запроса данных хранятся в объекте типа TssNetDataProducerParams. Основные свойства TssNetDataProducerParams.**
| Имя | Тип | Описание |
|---|---|---|
QueryID | TGUID | ID запроса. Используется сервером приложений для кэширования запросов. |
Params | TssParams | Параметры выполнения запроса |
ClientQueryParams | TssParams | Настройки запроса (текст запроса, имена потоков, скрипт-before, скрипт-after) |
Особенности реализации свойств и полей класса TssNetDataSet:
| Имя | Тип | Описание |
|---|---|---|
*FSourceDataProducer | Имеет тип TssNetDataProducer | |
+ FQueryParams | TssNetDataProducerParams | Настройки запроса |
*KeyField | Берется из FSourceDataProducer.KeyField [StreamName] | |
* StreamName | Берется из FSourceDataProducer.StreamName. Если пустой, то берется первый поток из QueryStreams. | |
+ ClientParams | TssParams | Доступ к FQueryParams.ClientQueryParams. |
* Params | TssParams | Доступ к FQueryParams.Params. |
+ QueryID | TGUID | Доступ к FQueryParams.QueryID. |
+ QueryName, + QuerySQL, + QueryModifySQLBefore, + QueryModifySQLAfter, + QueryStreams | String | Доступ к различным полям FQueryParams.ClientQueryParams. |
+ DataBase | TssNetDataBase | Соединение с сервером приложений |
Особенности реализации некоторых действий:
Дополнительные действия при Post при CachedUpdate = False.
Данные из кэша данного DataSet отправляем на запись в сервер приложений.
Возвращаемые данные запоминаем в FSourceDataProducer.
На основе возвращаемых данных выполняем GUIDTranslation (см. ниже) для данного DataSet’а.
Выполнение ApplyUpdates.
Забираем данные из кэша данного DataSet’а.
Для каждого непосредственно подчиненного DataSet’а:
Выполняем Post, если надо;
Забираем у него данные из кэша.
Отправляем данные из забранных кэшей на запись в сервер приложений.
Возвращаемые данные запоминаем в FSourceDataProducer.
На основе возвращаемых данных выполняем GUIDTranslation (см. ниже) для данного DataSet’а и каждого непосредственно подчиненного DataSet’а.
Сбрасываем кэши для данного DataSet’а и каждого непосредственно подчиненного DataSet’а
Выполнение ApplyUpdatesAndClose.
Этот метод специфичен для данного класса. Отличие от ApplyUpdates:
Сервер приложений только сохраняет переданные ему изменения в данных, не делая перезапрос данных от SQL сервера.
Поэтому сервер приложений не возвращает результат запроса.
Поэтому данные в FSourceDataProducer не подменяются.
Сброс кэша у DataSet’ов не выполняется.
Выполнение ExecSQL.
Этот метод специфичен для данного класса. При его выполнении вызывается NetDataProducer.ExecSQL. Никаких изменений в DataSet’е не производится.
GUIDTranslation.
Это действие связано с особенностями работы с GUID-полями при редактировании данных. При заполнении GUID-полей новыми значениями при редактировании данных через интерфейс пользователя, этим полям назначаются фиктивные значения. Сервер приложений, получая такие данные, перед записью их в SQL-сервер заменяет фиктивные значения на реальные, сгенерированные стандартным образом. В ответе на данный запрос клиента сервер приложений возвращает таблицу перекодировки GUID значений. Действие GUIDTranslation – это процесс замены фиктивных GUID значений на реальные согласно пришедшей таблице перекодировки. Замена выполняется в тех внутренних данных DataSet’а, где могут быть эти фиктивные GUID значения.