验证Azure表插入操作的好方法是什么?

时间:2018-09-27 19:17:20

标签: c# azure azure-storage azure-table-storage

到目前为止,我一直依靠ConcurrentDictionary作为ConcurrentDictionary操作的积极结果,

TableResult.HttpStatusCode Property

如果该实体已经存在,则会得到一个TableResult.HttpStatusCode = 204,如果插入成功,则会得到一个Insert。我还尝试按照以下方式在200上使用204参数:

TableOperation.Insert Method

echoContent在我的情况下不返回任何内容,因此我不确定自己是在做错什么还是在追逐独角兽。我不确定TableOperation是只是发回您发送给它的数据,还是实际上回显了书面实体。

是否有更好的验证方法?我是不是过于依赖Azure Table存储的REST API,还是我们仅此而已?

1 个答案:

答案 0 :(得分:0)

实际上,我实际上是先进行读取操作,然后评估结果以查看代码中早先是否存在重复项。无需先检查就执行的插入操作确实确实返回了409,但是在调试了由于在现有实体之上插入而引起的异常之后,才发现此错误。

我的第一部分代码不那么频繁地进行活动,而更重要的是,我要检查重复的实体,这就是为什么我先读取,然后检查,然后是插入的原因。

我后面的代码来自一个API,该API吸收了大量的数据,我不想在插入之前通过查找和比较来负担事务。

为解决此问题,我设置了一个try / catch块来监视409的特定异常类型:

catch (Microsoft.WindowsAzure.Storage.StorageException e) when (e.RequestInformation.HttpStatusCode == 409)
        {
            TableResult tableResult = new TableResult();
            tableResult.HttpStatusCode = e.RequestInformation.HttpStatusCode;
            tableResult.Result = e.Message;
            return tableResult;
        }

由于我的方法返回的是TableResult类型,因此我必须格式化新的tableResult才能发送回调用方。通过在调用方上使用switch语句,我可以处理各种情况(成功/异常)。