将实体插入Azure表时,我可以使用第二个参数关闭echo:
TableOperation Insert(ITableEntity entity, bool echoContent)
有没有办法在InsertOrReplace中关闭echo?
答案 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和空的回复正文。