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

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

到目前为止,我一直依赖 TableResult.HttpStatusCode = 204 作为 Insert 操作的肯定结果,如下所示:

TableResult.HttpStatusCode Property

如果实体已经存在,我会得到一个 200 ,如果插入操作成功,我会得到一个 204 。我还尝试在 TableOperation 上使用 echoContent 参数,如下所示:

TableOperation.Insert Method

在我的情况下,echoContent 不会返回任何内容,所以我不确定我是否做错了什么或者我是否在追逐 unicorn 。我不确定 echoContent 是否只是发回您发送给它的数据,或者它是否实际上回显了书面实体。

有没有更好的验证方法?我是否过于依赖 Azure 表存储的 REST api,还是我们只有这些?

最佳答案

我实际上是先执行读取操作,然后评估结果以查看代码中是否存在重复项。在没有首先检查的情况下执行的插入操作确实返回了 409,但是这是在调试由于在现有实体之上插入而导致的异常后发现的。

我的第一段代码是一个不太频繁的事件,更重要的是我检查重复的实体,这就是为什么我首先执行读取,然后检查,然后插入。

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

为了解决这个问题,我设置了一个 try/catch block 来监视 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 语句,我能够处理各种场景(成功/异常)。

关于c# - 验证 Azure 表插入操作的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52543741/

相关文章:

c# - 如何按类型获取 WPF 容器的子容器?

javascript - 如何将加载的音频设置为 HTML 音频标签 Controller ?

azure - 如何进行每个实例的 Azure 辅助角色配置?

c# - 从 Azure Management Fluent 创建 Azure 存储帐户时如何指定 CORS 设置

c# - 负载下的 Ninject WebAPI.SelfHost 性能问题(每隔几秒出现几秒)

c# - 关闭/删除选项卡项 WPF

c# - 具有点对点功能的实时视频

node.js - 如何将图像和文件上传到 Azure Blob Node.js

asp.net - 尝试通过 Web API 请求检索 Azure blob 时出现 403 错误

javascript - FineUploader 在 Android 设备上上传到 Azure 档位