404在Azure中删除表行时出错

本文关键字:出错 删除 Azure | 更新日期: 2023-09-27 18:24:58

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

404在Azure中删除表行时出错

事实证明,我对表的设计很糟糕,以至于在用检索方法构造RowKey时会被重写两次。

public class RouteResult : TableEntity
{
    public string Session
    {
        get
        {
            return PartitionKey;
        }
        set
        {
            RowKey = value + "-" + DateTime.UtcNow.Ticks; // The issue is here
            PartitionKey = value;
        }
    }
}

问题不在于重写操作,而在于导致不同RowKey的变量值DateTime.UtcNow.Ticks,因此找不到404。

我把表格改成:

public class RouteResult : TableEntity
{
    public RouteResult(string sessionId)
    {
        RowKey = sessionId + "-" + Guid.NewGuid();
        PartitionKey = sessionId;
    }
    public RouteResult()
    {
    }
}

现在一切都好了。