我正在尝试使用Azure表。我了解到Azure表存储了特定类的对象。你能不能告诉我桌子如何容纳课堂的精心设计?
假设有一个带有属性p1的A类,并且说我们已经将类型A的对象o1和o2存储到表T中。让我们稍后说我们将另一个属性p2添加到A.现在,将会出现什么样的行为当我们使用A的新定义来检索o1和o2时,我们得到了什么?它会抛出一些错误吗?如果没有,那么当检索到对象时,p2的值是多少?
或者开发人员是否负责管理其应用程序中的不同类定义?
答案 0 :(得分:4)
非常重要的说明:不要将Azure表视为object store
!可以将其视为具有非固定架构的key-value store
。
为你举个特例。当您从o1
存储o2
和class A
时,表格中会有2行:
然后向该类添加新属性并存储该对象。结果将是第三行:
稍后您可以检索所需的所有数据,并将其映射到具有与表列对应的属性名称的类的实例!
如果您尝试将前两个记录提取到最新的A类中,您只需为NULL
属性获取p2
(或值类型的默认值)。
如果您尝试将第3行提取到早期的A类中,则只能获得p1
属性值。 (最终您可能会看到错误,但不是关键错误,您仍然可以将P1列从表格映射到对象的P1属性。)
作为参考,Understanding Table Service data model对您来说是非常好的起点。
刚开始时,我还建议您浏览Windows Azure Storage Client library 2.0 - Tables Deep Dive。本文详细介绍了如何从Azure表中保存和获取数据。
答案 1 :(得分:0)
准确地说,当您检索前三个对象时,它们只会在没有p2的情况下出现。如果使用类TableEntity的默认反序列化方法,则对象将使p2为null。