4

我正在迁移以将新的存储客户端库用于我的 Azure 表存储。

使用之前的Storage Client Library 1.7命名空间进行查询:

var orders = serviceContext
                 .CreateQuery<Order>(tableName)
                 .AsTableServiceQuery<Order>()
                 .Where(e => e.PartitionKey == partitionKey && e.RowKey == rowKey)

使用新的Storage Client Library 2.0类进行查询:

string partitionKeyFilter = TableQuery.GenerateFilterCondition("PartitionKey", QueryComparisons.Equal, partitionKey);
string rowKeyFilter = TableQuery.GenerateFilterCondition("RowKey", QueryComparisons.Equal, rowKey);
string combinedFilter = TableQuery.CombineFilters(partitionKeyFilter, TableOperators.And, rowKeyFilter);

var query = new TableQuery<Order>().Where(combinedFilter);
var orders = table.ExecuteQuery<Order>(query);

如果我错了,请纠正我,但 1.7 更简洁,使用强类型实体,实现 IQueryable 接口并利用 LINQ 的全部功能。2.0 版让我觉得我又在使用 ADO.NET 数据集了。

我完全错过了这里的情节吗?我知道已经有了重大的性能改进,但为什么 2.0 版感觉像 API 降级?

4

2 回答 2

3

Storage Client Library 2.0 仍然在不同的命名空间中包含旧的 DataServices 实现。另一方面,与更新的 DataServices 实现和 SDK 的先前版本相比,新的表实现已显示出显着的性能改进。根据操作的不同,延迟提高了 25% 到 75%,同时系统资源利用率也显着下降。

请参阅Windows Azure Storage Client Library 2.0 Tables Deep Dive博客文章了解更多信息。正如博文中还提到的,如果您更喜欢 LINQ,您仍然可以使用已迁移到 Microsoft.WindowsAzure.Storage.Table.DataServices 命名空间的旧 DataServices 实现。

新表服务层中的 IQueryable 支持目前正在开发中。我们目前没有任何更具体的时间表细节可以分享。

于 2013-02-26T21:20:24.017 回答
2

相关的,包含用于表服务层的 IQueryable(带有一些非常好的优化)的 2.1 RC 现在可用。看

http://blogs.msdn.com/b/windowsazurestorage/archive/2013/07/12/introducing-storage-client-library-2-1-rc-for-net-and-windows-phone-8.aspx

http://www.nuget.org/packages/WindowsAzure.Storage

于 2013-08-05T16:38:48.140 回答