文字列型の「PictureUri」という属性を持つユーザーテーブルがあります。デフォルトではnullで、それをテキストに更新します。後でもう一度nullに更新しようとしても、起こりません。更新は成功しますが、文字列属性は null に変わりません。同じ属性を他のテキストに更新できますが、null にはできません。
Azure テーブル ストレージでは、属性を null に更新できませんか?
サンプルコードは次のとおりです。
モデル:
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 を使用するとテーブルの値が更新されますが、クエリを実行しようとすると古いデータが返されます。何が問題なのかわかりますか?