我的应用程序的管理员可以为userprofiles创建额外的属性。因此,UserA可以有1个手机号码,而UserB可以有5个。或者UserA可以有一个信用卡号,而UserB没有。
我想在Azure Table Storage中使用它。我正在制作通用实体并将它们插入表存储。
我知道每个实体/行只能有255个填充属性(分区键,行键,时间戳和你自己的属性。)在我的情况下,很有可能会有更多列,但机会非常小1用户实际上将使用255个属性。
现在问题是,当用户读取他的实体时,他不使用的所有其他属性将是'm:null="true'
。
正如你所看到的,他仍然需要他不需要的额外属性。
我当然可以在ReadingEntity
事件中忽略它们,但它仍然在开销之中吗?想象一下,你想获得100个用户的个人资料,你有500个列。 xml文件中会有很多无用的数据。网络流量。
有没有办法忽略那些null并且根本不发回它们?而不是将它们发回并将列标记为空?
答案 0 :(得分:3)
您使用的是开发存储吗?一定要试试这个 真正的云存储... dev存储可以保存实际的架构 将其他实体的属性应用到您正在尝试的属性 读。 - smarx 7月5日17:28
这是解决方案
答案 1 :(得分:2)
当您保存实体时,您是否也保存了这些额外的属性(具有空值)?就云存储而言,如果在保存实体时未提供属性,则在获取实体时不会返回该属性。然而,使用开发存储是另一个故事。如果您已经保存了具有3个自定义属性的实体和具有5个自定义属性的另一个实体。当您获取实体时,您将获得所有属性。
答案 2 :(得分:1)
您将看到返回给您的null事物的唯一方法是,如果您将它们保存为开头。我会再次检查您的通用实体持久性代码或您的通用实体本身。必须是发送空值以进行保存的情况。由于表存储中没有模式,因此它不可能为其不知道的字段发送值。 Fiddler会在保存时向您展示。