簡體   English   中英

為什么 CreateTableClient 不存在?

[英]Why the CreateTableClient doesn't exist?

我是一個新的 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");
        }
}

表服務現在在 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-the-required-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 存儲一起使用,但恐怕您不會擁有最新版本的包。

https://docs.microsoft.com/en-us/azure/cosmos-db/tutorial-develop-table-dotnet#parse-and-validate-the-connection-details

我相信您收到此錯誤是因為您在代碼中使用了兩個不同的 Storage SDK。

您正在使用Microsoft.WindowsAzure.Storage這是較舊的 SDK 以及Microsoft.Azure.Storage這是較新的 SDK。 目前,您正在從Microsoft.Azure.Storage命名空間獲得CloudStorageAccount的參考,但它沒有CloudTableClient的定義,因此您收到此錯誤。

一種解決方案是使用Microsoft.Azure.Cosmos.Table如另一個答案中所述。 往前走,這是推薦的方式。

其他選項是僅使用較舊的 SDK ( Microsoft.WindowsAzure.Storage )。 在這種情況下,您將從Microsoft.WindowsAzure.Storage命名空間獲得CloudStorageAccount ,並且它具有CloudTableClient的定義。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM