忽略空属性Azure表存储

时间:2011-07-05 14:42:33

标签: c# azure azure-storage azure-table-storage

我的应用程序的管理员可以为userprofiles创建额外的属性。因此,UserA可以有1个手机号码,而UserB可以有5个。或者UserA可以有一个信用卡号,而UserB没有。

我想在Azure Table Storage中使用它。我正在制作通用实体并将它们插入表存储。

我知道每个实体/行只能有255个填充属性(分区键,行键,时间戳和你自己的属性。)在我的情况下,很有可能会有更多列,但机会非常小1用户实际上将使用255个属性。

现在问题是,当用户读取他的实体时,他不使用的所有其他属性将是'm:null="true'

正如你所看到的,他仍然需要他不需要的额外属性。 我当然可以在ReadingEntity事件中忽略它们,但它仍然在开销之中吗?想象一下,你想获得100个用户的个人资料,你有500个列。 xml文件中会有很多无用的数据。网络流量。

有没有办法忽略那些null并且根本不发回它们?而不是将它们发回并将列标记为空?

enter image description here

3 个答案:

答案 0 :(得分:3)

  

您使用的是开发存储吗?一定要试试这个   真正的云存储... dev存储可以保存实际的架构   将其他实体的属性应用到您正在尝试的属性   读。    - smarx 7月5日17:28

这是解决方案

答案 1 :(得分:2)

当您保存实体时,您是否也保存了这些额外的属性(具有空值)?就云存储而言,如果在保存实体时未提供属性,则在获取实体时不会返回该属性。然而,使用开发存储是另一个故事。如果您已经保存了具有3个自定义属性的实体和具有5个自定义属性的另一个实体。当您获取实体时,您将获得所有属性。

答案 2 :(得分:1)

您将看到返回给您的null事物的唯一方法是,如果您将它们保存为开头。我会再次检查您的通用实体持久性代码或您的通用实体本身。必须是发送空值以进行保存的情况。由于表存储中没有模式,因此它不可能为其不知道的字段发送值。 Fiddler会在保存时向您展示。