Невозможно обновить объект типа строка в хранилище таблицы Azure до нуля

У меня есть пользовательская таблица, которая имеет атрибут с именем "PictureUri" типа строки. По умолчанию его ноль, а затем я обновляю его до некоторого текста. Позже, если я попытаюсь обновить его до нуля снова, это не произойдет. Обновление прошло успешно, но строковый атрибут не изменился на ноль. Я могу обновить тот же атрибут для некоторого другого текста, но только не для нуля.

Не позволяет ли хранилище таблиц Azure обновить атрибуты до нуля?

Вот пример кода:

Модель:

public class User
    {
        public string PictureUri{ get; set; }
        public string Email { get; set; }
        public string Username { get; set; }
    }

[System.Data.Services.Common.DataServiceKey(new string[] { "PartitionKey", "RowKey" })]

    public class PersistedUser : User,ITableEntity
    {
        public string PartitionKey
        {
            get { return this.Email; }
            set { this.Email = value; }
        }

        public string RowKey
        {
            get { return this.Username; }
            set { this.Username = value; }
        }

        public DateTime Timestamp { get; set; }

    }

Обновить API

user.PictureUri = null;
  tableServiceContext.AttachTo(TableNames.User, user);
        tableServiceContext.Update(user);
        tableServiceContext.SaveChanges(System.Data.Services.Client.SaveChangesOptions.ReplaceOnUpdate);

        var tempUser = this.tableServiceContext.QueryableEntities.Where(u => u.RowKey.Equals(user.Username, StringComparison.OrdinalIgnoreCase)).FirstOrDefault();

        tableServiceContext.Detach(user);

РЕДАКТИРОВАТЬ:

Использование SaveChangesOptions.ReplaceOnUpdate обновляет значение в таблице, но когда я пытаюсь запросить его, он возвращает старые данные. Есть идеи, в чем может быть проблема?

1 ответ

Решение

Попробуйте использовать следующее SaveChanges() и предоставить ReplaceOnUpdate в качестве опции SaveChangesOption. Что-то вроде:

        user.PictureUri = null;
        tableServiceContext.AttachTo(TableNames.User, user);
        tableServiceContext.Update(user);
        tableServiceContext.SaveChanges(SaveChangesOption.ReplaceOnUpdate);
        tableServiceContext.Detach(user);

Я думаю, что происходит то, что опция сохранения по умолчанию - "Слияние", где она не изменяет значения, которые не передаются (то есть передаются как ноль).

Другой вариант может быть установить user.Picture1 в String.Empty вместо null,

Другие вопросы по тегам