我是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软件包:
然后:
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 SDK。
您使用的是Microsoft.WindowsAzure.Storage
,它是较旧的SDK,Microsoft.Azure.Storage
是较新的SDK。当前,您正在从CloudStorageAccount
命名空间获取Microsoft.Azure.Storage
的引用,并且该引用没有CloudTableClient
的定义,因此会出现此错误。
一个解决方案是使用另一个答案中提到的Microsoft.Azure.Cosmos.Table
。推荐这样做。
其他选项是只使用旧的SDK(Microsoft.WindowsAzure.Storage
)。在这种情况下,您将从CloudStorageAccount
命名空间获取Microsoft.WindowsAzure.Storage
,并且具有CloudTableClient
的定义。