Имеют ли таблицы данных Azure «UpdateMerge» и «UpsertMerge» одинаковое поведение?C#

Место общения программистов C#
Anonymous
Имеют ли таблицы данных Azure «UpdateMerge» и «UpsertMerge» одинаковое поведение?

Сообщение Anonymous »

Я нахожусь в процессе преобразования базы кода из Microsoft.Azure.Cosmos.Table => Azure.Data.Tables в связи с прекращением поддержки первого, и по большей части я обнаружил, что это репрезентативные методы в новом API для всего, что я использовал в предыдущей версии, за одним исключением: операция Merge в классе TableBatchOperation.
Согласно документации для нового API, эквивалент должен быть TableTransactionType.UpdateMerge, который, если вы хотите выполнить пакетную обработку аналогично исходному TableBatchOperation.Merge, вам нужно просто создать коллекцию TableTransactionAction, указав TableTransactionType.UpdateMerge > в качестве типа действия вместе с вашей сущностью эта коллекция затем передается в yourClientTable.SubmitTransactionAsync
например,

Код: Выделить всё

List myBatch = new List();
myBatch.AddRange(someListOfEntities.Select(e => new TableTransactionAction(TableTransactionActionType.UpdateMerge, e)));
return myTableClient.SubmitTransactionAsync(myBatch);
Однако я заметил, что, хотя в документации указано, что это должно выполнять обновление только существующих объектов, оно ведет себя больше похоже на указанный UpsertMerge, в том смысле, что если объект не существует, он создаст его.
Это противоречит поведению API таблицы Cosmos SDK, где попытка слияния с несуществующим объектом приведет к выдаче ошибка. Был ли у кого-нибудь еще такой опыт, когда API UpdateMerge и UpsertMerge Azure Data Tables вели себя одинаково (несмотря на признаки того, что это не так)?
из Azure Документ по таблицам данных:
Изображение

документ cosmos для слияния
документ таблиц данных Azure для обновления объекта с режимами

Подробнее здесь: https://stackoverflow.com/questions/784 ... e-behavior

Вернуться в «C#»