微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

TableOperation.Insert总是返回冲突409,TableOperation.InsertOrReplace成功

如何解决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 总是在您尝试插入新实体但表中已经存在具有相同 PartitionKeyRowKey 的实体时出现。

在您的情况下,由于您没有向我展示代码,您应该通过更新 MessageQEntity 和/或 Message 字段来重用 Status 的相同对象来插入新实体,但不是RowKey

为什么 InsertOrReplace 按预期工作很简单,因为它知道存在一个现有实体,因此,它用新添加的实体替换该实体 :)

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。