Lors de la création d'une fonction Azure qui utilise Azure Table Storage comme liaison d'entrée et tente de récupérer plusieurs entités au lieu d'un seul enntity je reçois l'erreur suivante:Microsoft.Azure.WebJobs.Host.Tables.TableExtension + TableToIQueryableConverter`1 [TElement] 'enfreint la contrainte de type' TElement '
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
le code que j'utilise pour le, dans ce cas, le déclencheur C# timer est la suivante:
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}");
}
Ils ont probablement quelque chose comme 'IQueryable où TEntity: TableEntity' dans le code, alors vous obtenez un message d'erreur puisque votre type d'entité ne remplit pas la contrainte. –
juunas
Voulez-vous dire de nommer votre classe TableEntity 'Task'? Cela entrera en conflit avec System.Threading.Task intégré. –
@ mike-s c'était en effet un mauvais choix de nommage. Il a été renommé dans le code actuel et pour faire bonne mesure, je vais le changer ici aussi pour m'assurer que personne ne le copie accidentellement. –