无法保存可为null的<;bool>;当其为Null时,将其转换为Azure表

本文关键字:Null Azure 转换 bool 保存 null lt gt | 更新日期: 2023-09-27 18:20:36

例如,我在c#中有一个bool? Status

Status = true/false,它可以保存到Azure表,没有问题

但当Stats = null时,它无法保存(update)到Azure表,该列仍保留旧值

我想这可能是因为Azure表没有方案,但解决方案是什么?

如何保存null覆盖原始值?

EDIT,代码

数据如下:

public class someEntity : TableServiceEntity
{
    public bool? Status { get; set; }
}

更新如下:

tableContext.AttachTo("sometable", someEntity);
tableContext.UpdateObject(someEntity);
tableContext.SaveChangesWithRetries(SaveChangesOptions.Batch & SaveChangesOptions.ReplaceOnUpdate);

(我尝试了AttachTo"*"作为etag,尝试删除SaveChangesOptions,两者都不起作用)

对不起我的愚蠢,应该是这个代码,然后工作

tableContext.SaveChangesWithRetries(SaveChangesOptions.Batch | SaveChangesOptions.ReplaceOnUpdate);

无法保存可为null的<;bool>;当其为Null时,将其转换为Azure表

正如@Matthew所建议的,我把答案放在这里

非常简单,使用:

tableContext.SaveChangesWithRetries(SaveChangesOptions.Batch | SaveChangesOptions.ReplaceOnUpdate);

对于多个选项,请使用| (or),而不是& (and)。原因

SaveChangesOptions.ReplaceOnUpdate = true表示整个实体将被替换SaveChangesOptions.ReplaceOnUpdate = false,表示合并,旧数据将保留