如何在InsertOrReplace中关闭echo?

时间:2014-11-26 19:09:27

标签: azure azure-table-storage

将实体插入Azure表时,我可以使用第二个参数关闭echo:

TableOperation Insert(ITableEntity entity, bool echoContent)

有没有办法在InsertOrReplace中关闭echo?

1 个答案:

答案 0 :(得分:4)

您不必为InsertOrReplace关闭回声,默认情况下它已关闭,甚至更多 - 您无法将其打开。

查看the documentation of InsertOrReplace

  

状态代码   成功的操作返回状态代码204(无内容)。

  

响应主体   无。

TableResult.Result与传递给InsertOrReplace(ReferenceEqual)的对象相同。

此测试通过:

    [Fact]
    public void Test_InsertNew()
    {
        var entity = new SampleEntity("1", "2") {Content = "another initial"};
        var insertOrReplaceOperation = TableOperation.InsertOrReplace(entity);
        var newItemResponse = table.Execute(insertOrReplaceOperation);
        var returnedEntity = newItemResponse.Result as SampleEntity;
        Assert.Equal((int) HttpStatusCode.NoContent, newItemResponse.HttpStatusCode);
        Assert.Same(entity, returnedEntity); // TableResult.Result and entity we insert is exactly the same instance (ReferenceEqual)
    }

TableOperation有一个内部属性EchoContent,此属性用于为Insert操作设置 echo off 。即使你用反射改变它:

        insertOrReplaceOperation.GetType().GetProperty("EchoContent",BindingFlags.NonPublic).SetValue(insertOrReplaceOperation, true);

你不会得到回复的内容,只是状态204和空的回复正文。