Azure表存储 - 如何在更新或合并后保持列的初始顺序?

时间:2018-05-22 13:23:19

标签: xamarin.forms azure-storage azure-table-storage

我使用Azure表存储使用REST API的插入实体命令将传感器数据写入表存储。当我使用Microsoft Azure存储资源管理器查看表时,列按照我最初用于使用“插入实体”命令将它们存储在表中的顺序显示。当我用例如编辑实体时在Microsoft Azure存储资源管理器中再次观察表,列(属性)按照从左到右的属性名称的字母顺序排序。 我现在正在尝试编写一个Xamarin.Forms应用程序,我希望在更新(编辑)实体后保留列的初始顺序。是否有可用于更新实体的库或方法而不会破坏列的初始顺序?

2 个答案:

答案 0 :(得分:1)

@Zhaoxing Lu感谢您的回答。 是的,似乎Table Storage Service不支持特殊的列顺序。如果使用WindowsAzure.Storage library插入实体,则按字母顺序返回属性。

然而,我使用更多"手工制作"基于Table Service REST API的插入实体方法,使用Atom Feed保存实体,在NETMF设备上的表存储中存储数据的方法。

如果以这种方式存储到云,则会保留Atom Feed中属性的顺序,并在使用Microsoft Azure存储资源管理器监视时按此顺序排序。

由于我没有找到保留此顺序的方法,尝试使用不同库的一些合并或更新命令,我现在 - 用于编辑属性 - 采用以下方式:

  1. 从云中获取实体的实际副本
  2. 删除云中的实体
  3. 使用Table Service REST API的Insert Entity方法将编辑好的实体写回云端。
  4. 因此保留了初始订单。我知道当互联网连接中断时,丢失实体会有轻微的风险。 对于我刚刚写的应用程序,我不希望我的应用程序破坏用户最终想要维护的现有订单。

    您的第二个声明,即Microsoft Azure Storage Explorer默认显示"其他"按字母顺序排列的列似乎并非绝对正确。如果它们以上述方式存储,则默认按此顺序显示。查看我的Table screenshot

答案 1 :(得分:0)

我认为Azure表存储中的列没有订单,请不要依赖它。 Azure表存储服务根本不关心代码中定义的属性名称的顺序。

请注意,Microsoft Azure存储资源管理器只返回分区键+ RowKey +时间戳+按字母顺序排列的其他列