Предки: 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 значения.