删除Azure中的表行时出现404错误

时间:2014-09-29 08:26:01

标签: c# azure

在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
    }
}

1 个答案:

答案 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()
    {

    }
}

现在很好。