在VS2013的云服务项目中运行此代码时,出现404错误。
当我从表中检索时,如何删除不存在的行?
var routeResultQuery = new TableQuery<RouteResult>(); // I deleted where caluse for brevity
var results = resultTable.ExecuteQuery<RouteResult>(routeResultQuery).ToList();
if (results.Count() > 0) // The count shows 26 element when debugging
{
foreach(RouteResult rr in results)
{
var op = TableOperation.Delete(rr);
resultTable.Execute(op); // The error happens here
}
}
答案 0 :(得分:1)
事实证明我设计了这个表,以便在通过检索方法构造时将RowKey重写两次。
public class RouteResult : TableEntity
{
public string Session
{
get
{
return PartitionKey;
}
set
{
RowKey = value + "-" + DateTime.UtcNow.Ticks; // The issue is here
PartitionKey = value;
}
}
}
问题不在于覆盖操作,而是在变量值DateTime.UtcNow.Ticks
中导致不同的RowKey,因此找不到404。
我将表格更改为:
public class RouteResult : TableEntity
{
public RouteResult(string sessionId)
{
RowKey = sessionId + "-" + Guid.NewGuid();
PartitionKey = sessionId;
}
public RouteResult()
{
}
}
现在很好。