如何解决TableOperation.Insert总是返回冲突409,TableOperation.InsertOrReplace成功
在问题仅涉及AZURITE作为使用实际天青表工作正常。我注意到,在石青搜索任何实体不返回的ETag。
使用下面的实体,TableOperation.Insert
总是成功,但总是返回Conflict
409
,即使新的实体被添加到表中。
TableOperation.InsertOrReplace
总是成功,并且不引发异常。
有表中没有重复,所以没有明显的理由Insert
应该失败和InsertOrReplace
应该会成功。是否有任何理由Insert
将取得成功,并在同一时间失败?
public class MessageQEntity : TableEntity
{
public string Message { get; set; }
public string Status { get; set; }
public MessageQEntity()
{
PartitionKey = "Region";
RowKey = Guid.NewGuid().ToString();
}
}
解决方法
这个概念非常简单。 Conflict
总是在您尝试插入新实体但表中已经存在具有相同 PartitionKey
和 RowKey
的实体时出现。
在您的情况下,由于您没有向我展示代码,您应该通过更新 MessageQEntity
和/或 Message
字段来重用 Status
的相同对象来插入新实体,但不是RowKey
。
为什么 InsertOrReplace
按预期工作很简单,因为它知道存在一个现有实体,因此,它用新添加的实体替换该实体 :)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。