Microsoft.Azure.WebJobs.Host.Tables.TableExtension

2019-10-29 18:27发布

当创建一个使用Azure的表存储作为输入绑定,并试图检索多个实体,而不是只是一个单一的enntity我得到以下错误的Azure的功能:

Error:
Function ($ScheduleTrigger) Error: Microsoft.Azure.WebJobs.Host: Error indexing method 'Functions.myTimerTrigger'. Microsoft.Azure.WebJobs.Host:  GenericArguments[0], 'Submission#0+Task', on  Microsoft.Azure.WebJobs.Host.Tables.TableExtension+TableToIQueryableConverter`1[     TElement]' violates the constraint of type 'TElement'. mscorlib: GenericArguments[0], 'Submission#0+Task', on 'Microsoft.Azure.WebJobs.Host.Tables.TableExtension+TableToIQueryableConverter`1    [TElement]' violates the constraint of type parameter 'TElement'.    
Session Id: f4a00564b4864fb3a131557dd45924c7    

Timestamp: 2017-09-05T07:48:09.738Z

我使用的,在这种情况下的码,C#计时器触发如下:

using System;

public class Task
{
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public DateTime Timestamp { get; set; }
    public string Name { get; set; }
}

public static async Task Run(TimerInfo myTimer, IQueryable<Task> inputTable, TraceWriter log)
{
    foreach (var task in inputTable) {
        log.Info($"Processing task '{task.Name}' at: {DateTime.Now}");
    }
    log.Info($"Timer trigger executed at: {DateTime.Now}");
}

Answer 1:

我已经找到了答案,上面的自己,但因为错误信息没有迅速得到我的答案我想我会发布和回答这个问题我自己。

这个错误是因为我用我的实体模型不从EntityTable派生造成如下所述: https://docs.microsoft.com/en-us/azure/azure-functions/functions-bindings-storage-table

简单地改变上述为以下代码示例将修复错误:

using System;

public class MyInput : TableEntity
{
    public string Name { get; set; }
}

public static async Task Run(TimerInfo myTimer, IQueryable<MyInput> inputTable, TraceWriter log)
{
    foreach (var item in inputTable) {
        log.Info($"Processing item '{item.Name}' at: {DateTime.Now}");
    }
    log.Info($"Timer trigger executed at: {DateTime.Now}");
}


Answer 2:

对于一个IQueryable <T>结合,T必须是TableEntity。 要注意的是结合的IQueryable忽略其他结合性质(分区键,行密钥,过滤,取)。

但是,你只是使用foreach这里,所以你可以做简单的绑定。 我们有一个工作项目直接绑定到T [](其中T没有约束)。 https://github.com/Azure/azure-webjobs-sdk/issues/972 。 随意给予好评,如果它会是你的情况是有用的。



文章来源: Microsoft.Azure.WebJobs.Host.Tables.TableExtension+TableToIQueryableConverter`1[TElement]' violates the constraint of type 'TElement'