无法保存可为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);
正如@Matthew所建议的,我把答案放在这里
非常简单,使用:
tableContext.SaveChangesWithRetries(SaveChangesOptions.Batch | SaveChangesOptions.ReplaceOnUpdate);
对于多个选项,请使用| (or)
,而不是& (and)
。原因
SaveChangesOptions.ReplaceOnUpdate = true
表示整个实体将被替换SaveChangesOptions.ReplaceOnUpdate = false
,表示合并,旧数据将保留