从“WindowsAzure.Storage”迁移时,我应该为 Azure 表使用啥包
Posted
技术标签:
【中文标题】从“WindowsAzure.Storage”迁移时,我应该为 Azure 表使用啥包【英文标题】:What package should I use for Azure Tables when migrating away from "WindowsAzure.Storage"从“WindowsAzure.Storage”迁移时,我应该为 Azure 表使用什么包 【发布时间】:2021-10-01 07:59:19 【问题描述】:我目前正在将使用 ASP.NET WebApi 为 .NET Fx 4.8 编写的项目迁移到 .NET 5.0。该项目大量使用包 WindowsAzure.Storage 来访问 Azure 存储帐户上的 BLOB、表和队列。这个包已经被弃用了一段时间,说明它已经被分成了几个包。
对于队列和 Blob,我应该迁移到什么位置非常清楚。但是,关于 Azure Tables 似乎有很多困惑。
首先在 NuGet 包WindowsAzure.Storage 中声明用于表的包是Microsoft.Azure.CosmosDB.Table。这有点令人困惑,因为我一直认为“CosmosDB”与“Azure Tables”完全不同,但也许我错了。 Microsoft.Azure.CosmosDB.Table 的描述表明此软件包处于维护模式,将被弃用。我应该改用Microsoft.Azure.Cosmos.Table。 Microsoft.Azure.Cosmos.Table 但是很久没有更新了,2.0.0 已经预览了两年多了。它的 GitHub 存储库上还有一个问题,专门询问该项目是否已死 - 没有答案。 四处搜索后,我发现包Azure.Data.Tables 与我可能正在寻找的最接近。它已更新,看起来很活跃,并且似乎与其他存储包一致(版本号)。只是命名有点偏离。今年 6 月,MS 还发表了一篇博文,说这个包是全新的,所以我想这就是我要找的吗?无论如何:我发现 Azure.Data.Tables 的 API 与 WindowsAzure.Storage 非常相似,我只需要在这里和那里进行一些调整。 p>
但我现在完全缺少的是 QueryComparisons 和 TableQuery 类。他们刚刚走了吗?有替代品吗?
要迁移的代码示例如下:
var part1 =
TableQuery.GenerateFilterConditionForGuid(
nameof(SomeEntity.Id),
QueryComparisons.Equal,
idValue));
var part2 =
TableQuery.GenerateFilterConditionForGuid(
nameof(SomeEntity.Category)
QueryComparisons.Equal,
category));
return TableQuery.CombineFilters(part1, TableOperators.And, part2);
【问题讨论】:
请编辑您的问题并包含您当前拥有的想要迁移的代码。 请注意 Cosmos.Table 已于 2020 年更新,最新版本为 1.0.8。这个 1.0.8 有你的课程。不过,预览版已于 2019 年更新。 nuget.org/packages/Microsoft.Azure.Cosmos.Table/1.0.8 你有没有深究过这个? 我最终使用了 [Azure.Data.Tables] (nuget.org/packages/Azure.Data.Tables) 【参考方案1】:您可能应该在that blog post 和related docs 中进一步阅读:
查询表实体
TableClient 允许用户使用 OData 过滤器创建自定义查询。
string MyPK = "markers";
string MyRK = "id-001";
string filter = TableOdataFilter.Create($"PartitionKey eq MyPK or RowKey eq MyRK")
Pageable<TableEntity> entities = tableClient.Query<TableEntity>(filter: filter);
foreach (TableEntity entity in entities)
Console.WriteLine($"entity.GetString("Product"): entity.GetInteger("Count")");
【讨论】:
TableOdataFilter
现在是一个内部类,因此不可用,因此请谨慎阅读帖子的内容。它也不完全是替代品:eq
、or
、and
等按字面意思指定。不解释组合查询。以上是关于从“WindowsAzure.Storage”迁移时,我应该为 Azure 表使用啥包的主要内容,如果未能解决你的问题,请参考以下文章
如何用 Microsoft.Azure.Storage.Blob 替换 Microsoft.WindowsAzure.Storage
Microsoft.WindowsAzure.Storage (WindowsAzure.Storage) 9.1.1 在其依赖之外调用 Newtonsoft 失败
Microsoft.WindowsAzure.Storage 与 Microsoft.WindowsAzure.StorageClient
Microsoft.Azure.Storage 和 WindowsAzure.Storage Nuget 包有啥区别?