我正在编写第一个 Azure Function 和 Azure 表代码。当我编写 Get
查询函数时遇到问题。我有以下代码,它将尝试从表中获取所有作业。
public static class GetJobStatus
{
[FunctionName("GetJobStatus")]
public static async Task<IActionResult> Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", Route = null)] HttpRequest req,
[Table("JobTable")] CloudTable jobTable,
ILogger log)
{
log.LogInformation("Get job status.");
string jobId = req.Query["jobid"];
TableQuery<JobTable> query = new TableQuery<JobTable>();
var segment = await jobTable.ExecuteQuerySegmentedAsync(query, null);
var data = segment.Select(JobExtension.ToJob);
return new OkObjectResult("");
}
}
但是,我在这些语句上遇到编译时错误:
TableQuery<JobTable> query = new TableQuery<JobTable>();
var segment = await jobTable.ExecuteQuerySegmentedAsync(query, null);
我正在尝试粘贴悬停时出现的实际错误消息: 并且,在 ExecuteQuerySegmentedAsync 方法中获取以下内容
我的JobTable
继承自ITableEntity
(Azure.Data.Tables):
public class JobTable : ITableEntity
{
public string Id { get; set; }
public DateTime CreatedTime { get; set; }
public JobRequest Request { get; set; }
//ITableEntity Members
public virtual string PartitionKey { get; set; } = "Job";
public virtual string RowKey { get => Id; set => Id = value; }
public DateTimeOffset? Timestamp { get; set; }
public ETag ETag { get; set; }
}
我试图从这个article实现,但它使用较旧的 nuget 包,我遇到了麻烦。
更新#1:
根据 Gaurav Mantri
的建议,为了保持一致,我删除了 Azure.Data.Tables
并开始使用 Microsoft.WindowsAzure.Storage.Table
。这修复了编译时错误。但现在我收到以下运行时错误:
Microsoft.Azure.WebJobs.Host: Error indexing method 'GetJobStatus'. Microsoft.Azure.WebJobs.Extensions.Tables: Can't bind Table to type 'Microsoft.WindowsAzure.Storage.Table.CloudTable'.
更新#2:
我无法使其工作,因此我将所有代码和引用恢复为使用 Microsoft.Azure.Cosmos.Table
,如我引用的文章中所述。现在一切都按预期进行。但是,我仍然想看看如何使用较新的库。对于收到的原始问题,Gaurav 的建议已经解决了,所以我现在会接受答案。
最佳答案
我相信您遇到此问题是因为您使用了两种不同的 SDK - Azure.Data.Tables
和 Microsoft.WindowsAzure.Storage.Table
。
您的 JobTable
实体从 Azure.Data.Tables
实现 ITableEntity
,并且您将其与您的 CloudTable
一起使用来自Microsoft.WindowsAzure.Storage.Table
。
您可以尝试删除 Azure.Data.Tables
包并仅使用 Microsoft.WindowsAzure.Storage.Table
吗?
关于azure - Azure Function 中没有从表到 ITableEntity 的隐式引用转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71342813/