Использование нового адаптера таблицы SaaS в функции Azure

#c# #azure #azure-functions

#c# #azure #azure-функции

Вопрос:

Azure недавно выпустила адаптер таблиц SaaS для функций Azure. Я знаю, что эта функция является экспериментальной без документации, но я пытаюсь посмотреть, работает ли у кого-нибудь это.

Мои привязки (function.json):

 {
  "bindings": [
    {
      "name": "data",
      "type": "blobTrigger",
      "direction": "in",
      "path": "somePathToBlob",
      "connection": "connectionName_STORAGE"
    },
    {
      "type": "apiHubTable",
      "name": "output",
      "connection": "sql_SQL",
      "direction": "out",
      "tableName": "tblEventStage"
    }
  ],
  "disabled": false
}
 

Затем в run.csx у меня есть:

 public static void Run(string data, ITable<EventRecord> output, TraceWriter log)
{
    // add some records to the table
}
 

Функция успешно компилируется, а затем появляется предупреждающее сообщение:

Майкрософт.Azure.Веб-задания.Хост: ошибка метода индексации «Функционирует.ProcessAppInsights’. Майкрософт.Azure.Веб-задания.Расширения.ApiHub: атрибут ApiHubTableAttribute указывает на привязку таблицы. Тип параметра должен быть одним из следующих: Microsoft.Azure.ApiHub.ITable, Microsoft.Azure.Веб-задания.IAsyncCollector. Для привязки к клиенту таблицы не указывайте имя таблицы. Для привязки к сущности укажите идентификатор сущности.

Что я делаю не так?

Ответ №1:

Нашел решение — я использовал System.Data.Linq ITable вместо ITable от Microsoft.Azure.ApiHub. Я удалил System.Data.Linq и добавлен пакет nuget для Microsoft Azure ApiHub SDK. Для этого требуется добавить файл package.json:

 {
  "frameworks": {
    "net46":{
      "dependencies": {
        "Microsoft.Azure.ApiHub.Sdk": "0.6.10-alpha"
      }
    }
   }
}
 

Записи могут быть вставлены в таблицу с помощью:

 output.CreateEntityAsync(record);