Как обновить сущность в хранилище таблиц Azure? - PullRequest
0 голосов
/ 20 февраля 2019

Как обновить одну сущность в таблице Azure?

Чтение: https://docs.microsoft.com/en-us/dotnet/api/microsoft.windowsazure.storage.table.tableoperation.merge?view=azure-dotnet

Это просто означает, что она объединяет сущность.

Как этослияние?

Какие свойства перезаписаны, а какие нет?

Не будут ли обновлены свойства сущностей со значениями NULL?

Да, нет, может быть?

Ответы [ 2 ]

0 голосов
/ 20 февраля 2019

Чтобы понять, как работает Merge операция, рассмотрим этот пример.

Допустим, у вас есть объект, подобный следующему:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1"

Attribute2: "Value 2"

Теперь вы хотите обновить этот объект.Что вы делаете, это изменяете значение Attribute1 и добавляете новый атрибут Attribute3.

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute3: "Value 3"

Как только вы обновите сущность, используя Merge, результирующая сущность будет иметь вид:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute2: "Value 2"

Attribute3: "Value 3"

Подводя итог операции Merge:

  • Любой атрибут, присутствующий как в исходном, так и в обновленном объекте, будет обновлен.
  • Любой атрибут, присутствующий в исходном объектено не в обновленном объекте, не будет изменен.
  • Будет добавлен любой атрибут, который отсутствует в исходном объекте, но присутствует в обновленном объекте.

Обратите внимание, что есть Replace Entity операция, которая заменяет исходную сущность обновленной сущностью.Таким образом, в том же примере, если вы обновите сущность с помощью операции Replace Entity, результирующая сущность будет иметь вид:

PartitionKey: "PK"

RowKey: "RK"

Attribute1: "Value 1 (Updated)"

Attribute3: "Value 3"

Подводя итог операции Replace:

  • Любой атрибут, которыйприсутствует как в исходной, так и обновленная сущность будет обновлена.
  • Любой атрибут, который присутствует в исходной сущности, но отсутствует в обновленной сущности, будет удален.
  • Любой атрибут, отсутствующий в исходной сущностино присутствующий в обновленном объекте будет добавлен.
0 голосов
/ 20 февраля 2019

Согласно HTTP API https://docs.microsoft.com/en-us/rest/api/storageservices/merge-entity:

Служба таблиц не сохраняет нулевые значения для свойств.Указание свойства со значением NULL эквивалентно пропуску этого свойства в запросе.Только свойства с ненулевыми значениями будут обновлены операцией «Объединить сущность».

При условии, что это относится и к C # SDK.

...