重要
你是否正在寻找一种数据库解决方案,以应对需要高扩展性、99.999% 可用性服务级别协议(SLA)、即时自动扩展和跨多个区域的自动故障转移的场景? 请考虑使用 Azure Cosmos DB for NoSQL。
Azure Cosmos DB 中的项表示存储在表中的特定实体。 在 Table 的 API 中,项由一组键值对构成,这些键值对通过行键和分区键的组合来唯一标识。
使用组合键读取项
Azure Cosmos DB for Table 中的每个项都具有由行键和分区键的组合指定的唯一标识符。 这些组合键分别存储为 RowKey 属性和 PartitionKey 属性。 在表范围内,两个项不能共享同一个唯一标识符组合。
Azure Cosmos DB 需要项的唯一标识符和分区键值来执行该项的读取。 具体而言,提供组合键将对该项执行快速点读取,其预计成本以请求单位 (RU) 为单位。
读取项
若要对某一项的点读取,请使用以下策略之一:
使用内置类读取一个项
以下示例异步读取单个项,并使用内置 TableEntity 类型将结果反序列化为字典返回:
// Read existing item from server-side table
TableEntity readItem = await tableClient.GetEntityAsync<TableEntity>(
partitionKey: "68719518388",
rowKey: "gear-surf-surfboards"
);
TableClient.GetEntityAsync<TableEntity> 方法读取项并返回一个类型为 Response<TableEntity> 的对象。 Response<> 类型包含一个隐式转换运算符,用于将对象转换为 **TableEntity'' 对象。
使用自定义类型读取项目
注释
本节中的示例假定你已定义一个 C# 类型来表示名为 Product 的数据:
// C# record type for items in the table
public record Product : ITableEntity
{
public string RowKey { get; set; } = default!;
public string PartitionKey { get; set; } = default!;
public string Name { get; init; } = default!;
public int Quantity { get; init; }
public bool Sale { get; init; }
public ETag ETag { get; set; } = default!;
public DateTimeOffset? Timestamp { get; set; } = default!;
}
以下示例异步点读取单个项,并使用提供的泛型类型返回反序列化项:
// Read existing item from server-side table
Product readItem = await tableClient.GetEntityAsync<Product>(
partitionKey: "68719518388",
rowKey: "gear-surf-surfboards"
);
重要
用于 TableClient.GetEntityAsync<> 方法的泛型类型必须实现 ITableEntity 接口。
TableClient.GetEntityAsync<> 方法读取项并返回一个类型为 Response<> 的对象。 Response<> 类型包含一个隐式转换运算符,用于将对象转换为泛型类型。 若要了解有关隐式运算符的详细信息,请参阅用户定义的转换运算符。
后续步骤
在阅读完各种内容之后,尝试使用我们的教程之一来查询 Azure Cosmos DB 中的表格数据。