Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
В этом разделе представлено краткое введение в DiffGrams.
Формат DiffGram
Это общий формат DiffGram:
<?xml version="1.0"?>
<diffgr:diffgram
xmlns:msdata="urn:schemas-microsoft-com:xml-msdata"
xmlns:diffgr="urn:schemas-microsoft-com:xml-diffgram-v1"
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<DataInstance>
...
</DataInstance>
[<diffgr:before>
...
</diffgr:before>]
[<diffgr:errors>
...
</diffgr:errors>]
</diffgr:diffgram>
Формат DiffGram состоит из следующих блоков:
<DataInstance>
Имя этого элемента DataInstance используется в целях объяснения в этой документации. Например, если DiffGram был создан из набора данных в .NET Framework, значение свойства Name набора данных будет использоваться в качестве имени этого элемента. Этот блок содержит все соответствующие данные после изменения, возможно, включая данные, которые не были изменены. Логика обработки DiffGram игнорирует элементы в этом блоке, для которых атрибут diffgr:hasChanges не указан.
<diffgr:before>
Этот необязательный блок содержит исходные экземпляры записей (элементы), которые должны быть обновлены или удалены. Все таблицы базы данных, которые изменяются (обновляются или удаляются) DiffGram, должны отображаться как элементы верхнего уровня в блоке перед> блоком<.
<diffgr:errors>
Этот необязательный блок игнорируется логикой обработки DiffGram.
Заметки DiffGram
Эти заметки определены в пространстве имен DiffGram "urn:schemas-microsoft-com:xml-diffgram-01":
идентификатор
Этот атрибут используется для связывания элементов в <блоках ранее> и <DataInstance> .
hasChanges
Для операции вставки или обновления DiffGram должен указать этот атрибут со значением, вставленным или измененным. Если этот атрибут отсутствует, соответствующий элемент в <DataInstance> игнорируется логикой обработки, и обновления не выполняются. Примеры работы см. в примерах DiffGram (SQLXML 4.0).
parentID
Этот атрибут используется для указания отношений "родительский-дочерний" между элементами в DiffGram. Этот атрибут отображается только в блоке перед> блоком<. Он используется SQLXML при применении обновлений. Связь "родительский-дочерний" используется для определения порядка обработки элементов в DiffGram.
Общие сведения о логике обработки DiffGram
Логика обработки DiffGram использует определенные правила, чтобы определить, является ли операция вставкой, обновлением или удалением. Эти правила описаны в следующей таблице.
| Операция | Описание |
|---|---|
| Вставить | DiffGram указывает операцию вставки, когда элемент отображается в <блоке DataInstance>, но не в соответствующем <блоке,> а атрибут diffgr:hasChanges указан (diffgr:hasChanges=inserted) в элементе. В этом случае DiffGram вставляет экземпляр записи, указанный в блоке <DataInstance> в базу данных. Если атрибут diffgr:hasChanges не указан, элемент игнорируется логикой обработки и не выполняется вставка. Примеры работы см. в примерах DiffGram (SQLXML 4.0). |
| Обновление | DiffGram указывает операцию обновления, если в блоке перед> блоком есть соответствующий элемент <в блоке DataInstance (то есть оба элемента имеют атрибут diffgr:id с одинаковым значением), а атрибут diffgr:hasChanges указывается со значением, измененным для элемента в блоке DataInstance>.<>< Если атрибут diffgr:hasChanges не указан в элементе в блоке <DataInstance> , ошибка возвращается логикой обработки. Примеры работы см. в примерах DiffGram (SQLXML 4.0). Если diffgr:parentID указывается в блоке <перед> блоком, связь элементов с родительским дочерним элементом, заданными родительским идентификатором, используется для определения порядка обновления записей. |
| Удалить | DiffGram указывает операцию удаления, когда элемент отображается в блоке <перед> блоком, но не в соответствующем <блоке DataInstance> . В этом случае DiffGram удаляет экземпляр записи, указанный <в блоке до> блокировки из базы данных. Примеры работы см. в примерах DiffGram (SQLXML 4.0). Если diffgr:parentID указывается в блоке <перед> блоком, связь элементов с родительским дочерним элементом, заданными родительским идентификатором, используется для определения порядка удаления записей. |
Замечание
Параметры нельзя передать в DiffGrams.