Почему CreateTableClient не существует? - PullRequest
0 голосов
/ 03 марта 2020

Я новый пользователь таблицы azure, и я пытаюсь что-то записать в таблицу, может кто-нибудь объяснить, почему не работает storageAccount.CreateTableClient ().

using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Microsoft.Azure.WebJobs;
using Microsoft.WindowsAzure.Storage.Table;
using Microsoft.Extensions.Logging;
using System.ComponentModel.DataAnnotations.Schema;
using Microsoft.Azure.Storage.Queue;
using Microsoft.Azure.Storage;
using Microsoft.Extensions.Configuration;
using Newtonsoft.Json;
using Microsoft.WindowsAzure.Storage.Blob;




namespace project_3_backend
{
    public class Functions
    {
        private static CloudTable LoanInfo = null;

        private static IConfiguration Configuration;

        public Functions(IConfiguration configuration)
        {
            Configuration = configuration;
        }

        public static void WritetoTable()
        {
            string connectionString = Configuration.GetValue<String>("AzureWebjobsStorage");
            CloudStorageAccount storageAccount = CloudStorageAccount.Parse(connectionString);
            CloudTableClient tableClient = storageAccount.CreateTableClient();
            CloudTable table_mortage = tableClient.GetTableReference("LoanInfo");
        }
}

Ответы [ 2 ]

1 голос
/ 03 марта 2020

Table Services теперь находится под Cosmos Db:

Установите следующие пакеты nuget:

  • Microsoft. Azure .Cosmos.Table
  • Microsoft.Extensions .Configuration
  • Microsoft.Extensions.Configuration. Json
  • Microsoft.Extensions.Configuration.Binder

https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-table-dotnet#install -требуется- nuget-package

Тогда:

public static async Task<CloudTable> CreateTableAsync(string tableName)
  {
    string storageConnectionString = AppSettings.LoadAppSettings().StorageConnectionString;

    // Retrieve storage account information from connection string.
    CloudStorageAccount storageAccount = CreateStorageAccountFromConnectionString(storageConnectionString);

    // Create a table client for interacting with the table service
    CloudTableClient tableClient = storageAccount.CreateCloudTableClient(new TableClientConfiguration());

    Console.WriteLine("Create a Table for the demo");

    // Create a table client for interacting with the table service 
    CloudTable table = tableClient.GetTableReference(tableName);
    if (await table.CreateIfNotExistsAsync())
    {
      Console.WriteLine("Created Table named: {0}", tableName);
    }
    else
    {
      Console.WriteLine("Table {0} already exists", tableName);
    }

    Console.WriteLine();
    return table;
}

Возможно, вы все еще можете использовать старые пакеты nuget, чтобы заставить его работать с Azure Storage, но, боюсь, у вас не будет последняя версия пакетов.

https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-table-dotnet#parse и проверить детали подключения

0 голосов
/ 04 марта 2020

Я полагаю, что вы получаете эту ошибку, потому что вы используете два разных Storage SDK в своем коде.

Вы используете Microsoft.WindowsAzure.Storage, который является более старым SDK, а также Microsoft.Azure.Storage, который является более новым. В настоящее время вы получаете ссылку на CloudStorageAccount из Microsoft.Azure.Storage пространства имен, и в ней нет определения для CloudTableClient, и, следовательно, вы получаете эту ошибку.

Одним из решений является использование Microsoft.Azure.Cosmos.Table как упоминалось в другом ответе. В дальнейшем это рекомендуемый путь.

Другой вариант - просто использовать более старый SDK (Microsoft.WindowsAzure.Storage). В этом случае вы получите CloudStorageAccount из Microsoft.WindowsAzure.Storage пространства имен, и это имеет определение для CloudTableClient.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...