Azure.Data.Tables 12.9.0

前缀已保留
dotnet add package Azure.Data.Tables --version 12.9.0                
NuGet\Install-Package Azure.Data.Tables -Version 12.9.0                
此命令旨在在Visual Studio的包管理器控制台中使用,因为它使用NuGet模块的Install-Package版本。
<PackageReference Include="Azure.Data.Tables" Version="12.9.0" />                
对于支持PackageReference的项目,将此XML节点复制到项目文件中以引用包。
paket add Azure.Data.Tables --version 12.9.0                
#r "nuget: Azure.Data.Tables, 12.9.0"                
#r指令可以在F# Interactive和多语言笔记本中使用。将其复制到交互工具或脚本源代码中引用包。
// Install Azure.Data.Tables as a Cake Addin
#addin nuget:?package=Azure.Data.Tables&version=12.9.0

// Install Azure.Data.Tables as a Cake Tool
#tool nuget:?package=Azure.Data.Tables&version=12.9.0                

适用于 .NET 的 Azure 表客户端库

Azure 表存储是一种将大量结构化NoSQL数据存储在云中的服务,它提供了一个无模式设计的键/属性存储。

Azure Cosmos DB 为需要像

  • 托管全球分布
  • 全球专用吞吐量
  • 99.9%的尾端低于10毫秒的延迟
  • 保证高可用性
  • 自动二级索引

Azure 表客户端库可以无缝地针对Azure Table存储或Azure Cosmos DB表服务端点,无需更改代码。

源代码 | 包 (NuGet) | API参考文档 | 示例 | 变更记录

入门指南

安装包

使用 NuGet 安装 Azure Tables 客户端库 for .NET

dotnet add package Azure.Data.Tables

先决条件

  • 一个 Azure 订阅
  • 一个具有指定的 Azure Table API 的现有 Azure 存储账户或 Azure Cosmos DB 数据库。

如果您需要创建这些中的任何一个,可以使用 Azure CLI

创建存储账户

在订阅 MySubscription 中的 West US 区域内创建一个名为 mystorageaccount 的存储账户,所属资源组为 MyResourceGroup

az storage account create -n mystorageaccount -g MyResourceGroup -l westus --subscription MySubscription
创建 Cosmos DB

MyResourceGroup 资源组中创建一个名为 MyCosmosDBDatabaseAccount 的 Cosmos DB 账户,并在该账户中创建一个名为 MyTableName 的表。

az cosmosdb create --name MyCosmosDBDatabaseAccount --capabilities EnableTable --resource-group MyResourceGroup --subscription MySubscription

az cosmosdb table create --name MyTableName --resource-group MyResourceGroup --account-name MyCosmosDBDatabaseAccount

客户端认证

了解更多关于认证选项 (包括连接字符串、共享密钥、共享密钥签名和 TokenCredentials) 的信息,请参阅我们的示例。

关键概念

  • TableServiceClient - 提供创建、列出和删除表等与 Table 服务级别交互方法的客户端。
  • TableClient - 提供创建、查询和删除表内实体等与单个表实体级别交互方法的客户端。
  • Table - 表以集合的形式存储数据。
  • Entity - 实体类似于行。一个实体具有一个主键和一组属性。属性是一个名称值对,类似于列。

Table 服务常见的用途包括

  • 存储 TB 级的 structed 数据,可服务于规模化的网络应用程序
  • 存储无需复杂联合、外键或存储过程的数據集,可以进行反规范化以提高访问速度
  • 使用集群索引快速查询数据
  • 使用 OData 协议和 LINQ 过滤表达式访问数据

线程安全

我们保证所有客户端实例方法都是线程安全且相互独立的 (指导原则)。这确保了重用客户端实例的建议总是安全的,即使在多线程的环境中也是如此。

其他概念

客户端选项 | 访问响应 | 长时间运行的操作 | 处理失败 | 诊断 | Mocking | 客户端生命周期

示例

创建 Table 服务客户端

首先,我们需要构建一个 TableServiceClient

// Construct a new "TableServiceClient using a TableSharedKeyCredential.

var serviceClient = new TableServiceClient(
    new Uri(storageUri),
    new TableSharedKeyCredential(accountName, storageAccountKey));

创建 Azure 表

接下来,我们可以创建一个新的表。

// Create a new table. The TableItem class stores properties of the created table.
TableItem table = serviceClient.CreateTableIfNotExists(tableName);
Console.WriteLine($"The created table's name is {table.Name}.");

获取 Azure 表

可以使用 OData 过滤查询现有的 Azure 表集合。

// Use the <see cref="TableServiceClient"> to query the service. Passing in OData filter strings is optional.

Pageable<TableItem> queryTableResults = serviceClient.Query(filter: $"TableName eq '{tableName}'");

Console.WriteLine("The following are the names of the tables in the query results:");

// Iterate the <see cref="Pageable"> in order to access queried tables.

foreach (TableItem table in queryTableResults)
{
    Console.WriteLine(table.Name);
}

删除 Azure 表

可以将单独的表从服务中删除。

// Deletes the table made previously.
serviceClient.DeleteTable(tableName);

创建 Table 客户端

要与表实体交互,我们必须首先构建一个 TableClient

// Construct a new <see cref="TableClient" /> using a <see cref="TableSharedKeyCredential" />.
var tableClient = new TableClient(
    new Uri(storageUri),
    tableName,
    new TableSharedKeyCredential(accountName, storageAccountKey));

// Create the table in the service.
tableClient.Create();

添加表实体

让我们定义一个新的 TableEntity,以便我们可以将其添加到表中。

// Make a dictionary entity by defining a <see cref="TableEntity">.
var tableEntity = new TableEntity(partitionKey, rowKey)
{
    { "Product", "Marker Set" },
    { "Price", 5.00 },
    { "Quantity", 21 }
};

Console.WriteLine($"{tableEntity.RowKey}: {tableEntity["Product"]} costs ${tableEntity.GetDouble("Price")}.");

使用 TableClient 我们现在可以将我们的新实体添加到表中。

// Add the newly created entity.
tableClient.AddEntity(tableEntity);

查询表实体

为了检查现有表实体集,我们可以使用OData过滤器查询表。

Pageable<TableEntity> queryResultsFilter = tableClient.Query<TableEntity>(filter: $"PartitionKey eq '{partitionKey}'");

// Iterate the <see cref="Pageable"> to access all queried entities.
foreach (TableEntity qEntity in queryResultsFilter)
{
    Console.WriteLine($"{qEntity.GetString("Product")}: {qEntity.GetDouble("Price")}");
}

Console.WriteLine($"The query returned {queryResultsFilter.Count()} entities.");

如果您更喜欢LINQ查询表达式风格,我们也可以使用该语法来查询表。为了演示这个语法,您需要一个如下所示的强类型模型:

// Define a strongly typed entity by implementing the ITableEntity interface.
public class OfficeSupplyEntity : ITableEntity
{
    public string Product { get; set; }
    public double Price { get; set; }
    public int Quantity { get; set; }
    public string PartitionKey { get; set; }
    public string RowKey { get; set; }
    public DateTimeOffset? Timestamp { get; set; }
    public ETag ETag { get; set; }
}

给定了这个模型类定义,以下是编写查询的方式

double priceCutOff = 6.00;
Pageable<OfficeSupplyEntity> queryResultsLINQ = tableClient.Query<OfficeSupplyEntity>(ent => ent.Price >= priceCutOff);

删除表实体

如果我们不再需要我们的新表实体,它可以被删除。

// Delete the entity given the partition and row key.
tableClient.DeleteEntity(partitionKey, rowKey);

故障排除

当使用Azure表库时,服务返回的错误是通过与REST API请求相同的HTTP状态代码报告的。

例如,如果您尝试创建一个已存在的表,将返回一个409错误,表示“冲突”。

// Construct a new TableClient using a connection string.

var client = new TableClient(
    connectionString,
    tableName);

// Create the table if it doesn't already exist.

client.CreateIfNotExists();

// Now attempt to create the same table unconditionally.

try
{
    client.Create();
}
catch (RequestFailedException ex) when (ex.Status == (int)HttpStatusCode.Conflict)
{
    Console.WriteLine(ex.ToString());
}

设置控制台日志

查看日志最简单的方法是启用控制台日志。要创建一个输出消息到控制台的自定义日志监听器,请使用AzureEventSourceListener.CreateConsoleLogger方法。

// Setup a listener to monitor logged events.
using AzureEventSourceListener listener = AzureEventSourceListener.CreateConsoleLogger();

有关其他日志机制的更多信息,请参阅这里

下一步

开始使用我们的表示例

已知问题

有关Cosmos DB表端点的当前已知问题列表,可以在这里找到。

贡献

本项目欢迎贡献和建议。大多数贡献都需要您同意一个《贡献者许可协议》(CLA),该协议声明您有权实际上授予我们使用您贡献的权利。有关详细信息,请访问cla.microsoft.com

本项目已采用Microsoft开源准则。如需更多信息,请参阅准则常见问题解答,或通过[email protected]联系以获取任何额外的问题或评论。

产品 兼容的和附加的目标框架版本。
.NET net5.0已经计算。 net5.0-windows已经计算。 net6.0已经计算。 net6.0-android已经计算。 net6.0-ios已经计算。 net6.0-maccatalyst已经计算。 net6.0-macos已经计算。 net6.0-tvos已经计算。 net6.0-windows已经计算。 net7.0已经计算。 net7.0-android已经计算。 net7.0-ios已经计算。 net7.0-maccatalyst已经计算。 net7.0-macos已经计算。 net7.0-tvos已经计算。 net7.0-windows已经计算。 net8.0已经计算。 net8.0-android已经计算。 net8.0-browser已经计算。 net8.0-ios已经计算。 net8.0-maccatalyst已经计算。 net8.0-macos已经计算。 net8.0-tvos已经计算。 net8.0-windows已经计算。
.NET Core netcoreapp2.0已经计算。 netcoreapp2.1已经计算。 netcoreapp2.2已经计算。 netcoreapp3.0已经计算。 netcoreapp3.1已经计算。
.NET Standard netstandard2.0兼容。 netstandard2.1已经计算。
.NET Framework net461已经计算。 net462已经计算。 net463已经计算。 net47已经计算。 net471已经计算。 net472已经计算。 net48已经计算。 net481已经计算。
MonoAndroid monoandroid 已计算。
MonoMac monomac 已计算。
MonoTouch monotouch 已计算。
Tizen tizen40 已计算。 tizen60 已计算。
Xamarin.iOS xamarinios 已计算。
Xamarin.Mac xamarinmac 已计算。
Xamarin.TVOS xamarintvos 已计算。
Xamarin.WatchOS xamarinwatchos 已计算。
兼容的目标框架
包含的目标框架(在包中)
关于 目标框架.NET Standard 的更多信息。

NuGet 包 (222)

显示依赖 Azure.Data.Tables 的前 5 个 NuGet 包

下载
Microsoft.Azure.DurableTask.AzureStorage

对 Durable Task Framework 的 Azure Storage 提供程序扩展

Microsoft.Orleans.Clustering.AzureStorage

由 Azure 表存储支持的 Microsoft Orleans 集群提供程序

Serilog.Sinks.AzureTableStorage

使用 HTTP 将事件写入 Azure 表存储的 Serilog 事件接收器

Microsoft.Azure.Kusto.Ingest

将数据编程式地导入 Kusto

Microsoft.Orleans.Persistence.AzureStorage

由 Azure 存储支持的 Microsoft Orleans 持久性提供程序

GitHub 存储库 (30)

显示依赖 Azure.Data.Tables 的前 5 个最受欢迎的 GitHub 存储库

存储库 星标数
dotnet/orleans
基于 .NET 的云原生应用程序框架
Azure/azure-sdk-for-net
此存储库用于Azure SDK for .NET的积极开发。建议SDK用户访问我们的公共开发人员文档https://learn.microsoft.com/dotnet/azure/或我们的版本化开发人员文档https://azure.github.io/azure-sdk-for-net/。
Azure/azure-powershell
Microsoft Azure PowerShell
Xabaril/AspNetCore.Diagnostics.HealthChecks
适用于ASP.NET Core诊断程序的企业级HealthChecks
testcontainers/testcontainers-dotnet
一个库,支持所有兼容.NET Standard版本的测试,使用丢弃的Docker容器实例。
版本 下载 最后更新
12.9.0 189,959 7/22/2024
12.8.3 3,411,136 2/6/2024
12.8.2 2,645,660 11/13/2023
12.8.1 2,237,383 8/16/2023
12.8.0 10,760,914 2/8/2023
12.7.1 3,036,072 11/15/2022
12.7.0 376,925 11/9/2022
12.7.0-beta.1 25,341 9/6/2022
12.6.1 6,165,195 7/7/2022
12.6.0 794,393 6/8/2022
12.6.0-beta.1 7,141 5/10/2022
12.5.0 2,680,506 3/10/2022
12.4.0 1,801,778 1/13/2022
12.3.0 4,099,407 11/9/2021
12.2.1 313,665 10/14/2021
12.2.0 1,003,908 9/8/2021
12.2.0-beta.1 9,700 8/10/2021
12.1.0 625,777 7/7/2021
12.0.1 167,523 6/10/2021
12.0.0 35,957 6/9/2021
12.0.0-beta.8 146,473 5/11/2021
12.0.0-beta.7 38,168 4/6/2021
12.0.0-beta.6 101,068 3/9/2021
3.0.0-beta.5 142,505 1/12/2021
3.0.0-beta.4 8,856 12/10/2020
3.0.0-beta.3 60,992 11/12/2020
3.0.0-beta.2 20,201 10/6/2020
3.0.0-beta.1 16,818 9/8/2020