【问题标题】:Azure Table Storage - How to keep initial order of columns after update or merge?Azure 表存储 - 如何在更新或合并后保持列的初始顺序?
【发布时间】:2018-11-01 06:59:13
【问题描述】:
我正在使用 Azure 表存储使用 REST API 的插入实体命令将传感器数据写入表存储。当我使用 Microsoft Azure 存储资源管理器查看表时,列按照我最初使用插入实体命令将它们存储在表中的顺序出现。当我使用例如编辑实体时Microsoft Azure 存储资源管理器,然后再次查看表,列(属性)根据属性名称从左到右按字母顺序排序。
我现在正在尝试编写一个 Xamarin.Forms 应用程序,我希望在更新(编辑)实体后保持列的初始顺序。有没有我可以用来更新实体而不破坏列的初始顺序的库或方法?
【问题讨论】:
标签:
xamarin.forms
azure-storage
azure-table-storage
【解决方案1】:
@Zhaoxing Lu 感谢您的回答。
是的,似乎表存储服务不打算支持特殊的列顺序。如果使用WindowsAzure.Storage library 插入实体,则按字母顺序返回属性。
但是,我使用一种更“手工”的方法将数据存储在 NETMF 设备上的表存储中,该方法基于 Table Service REST API 的插入实体方法,并使用 Atom Feed 来保存实体。
如果以这种方式存储到云端,Atom Feed 中的属性顺序将被保留,并且在使用 Microsoft Azure 存储资源管理器查看时会按此顺序排序。
由于我在尝试不同库的一些合并或更新命令时没有找到保留此顺序的方法,所以我现在 - 对于编辑属性 - 采用以下方式:
- 从云端获取实体的实际副本
- 删除云端实体
- 使用表服务 REST API 的插入实体方法将编辑的实体写回云端。
因此保留了初始顺序。我知道当互联网连接中断时丢失实体的风险很小。
对于我刚刚编写的应用程序,我不希望我的应用程序破坏用户最终想要维护的现有订单。
您的第二个陈述,即 Microsoft Azure 存储资源管理器默认按字母顺序显示“其他”列似乎不是绝对正确的。如果按上述方式存储,则默认按此顺序显示。
请看下面我的表格截图:
.
【解决方案2】:
我认为 Azure 表存储中的列没有顺序,请不要依赖它。 Azure 表存储服务根本不关心代码中定义的属性名称的顺序。
请注意,Microsoft Azure 存储资源管理器仅返回 Partition Key + RowKey + Timestamp + 按字母顺序排列的其他列。