CloudTable.Execute(TableOperation) 缺失。我使用了错误的 NuGet 包吗?

CloudTable.Execute(TableOperation) is missing. Am I using the wrong NuGet package?

我正在编写一个与我的 Azure table 通信并对其进行操作的 azure 函数。但是,缺少 CloudTable.Execute 函数,我找不到解决方法。我已经安装了推荐的软件包:

这是我的使用语句:

using System;
using Microsoft.Azure.WebJobs;
using Microsoft.Azure.WebJobs.Host;
using Microsoft.Azure;
//using Microsoft.Azure.Storage; ->Commented this out, not sure if I need it
using Microsoft.WindowsAzure.Storage.Table;
using Microsoft.WindowsAzure.Storage;

这是我的代码

public SickCity GetRow(CloudTable table, string city, string state)
{
    TableOperation tOP = TableOperation.Retrieve<SickCity>(city, state);
    TableResult result = table.Execute(tOP); //Execute(TableOperation) not found
    return result.Result as SickCity;
}

唯一可用的执行函数是 ExecuteAsync、ExecuteBatchAsync、ExecuteQuerySegmentedAsync 和 ExecuteQuerySegmentedAsync<>。我错过了什么吗?

编辑:我应该指出 Execute 函数甚至没有显示在 IntelliSense 中

Azure Function SDK 包已经在引用 WindowsAzure.Storage 包的一个版本。根据您的运行时版本,它将是 7.28.6.

版本

因此,您应该只引用 Microsoft.NET.Sdk.Functions 包并使用它引用的任何版本。否则,您可能会遇到类似于您的错误的神秘运行时错误。

解决方案:删除对 WindowsAzure.Storage 的显式引用以及 Functions SDK 隐式引用的所有其他包。

不确定您是如何初始化 CloudTable 对象的。以下是在我的应用程序中适合我的代码:-

CloudStorageAccount account = CloudStorageAccount.Parse(<<connection string>>);
CloudTableClient tableClient = account.CreateCloudTableClient();
CloudTable table = tableClient.GetTableReference(<<azure table name>>);

TableOperation retrieveOperation = TableOperation.Retrieve<SickCity>(city, state);
TableResult retrievedResult = table.Execute(retrieveOperation);

希望这可能有所帮助。

不,你什么都没有遗漏...从现在开始,经典的方法(不使用cosmos,甚至使用cosmos,我认为也是这样),SDK上的所有操作似乎都是异步...仅此而已...我 运行 昨晚同样感到惊讶...