Azure表InsertOrMerge Upsert:可以动态创建要合并的对象吗?

时间:2012-08-28 12:21:48

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

我需要将动态属性列表合并到Azure表中已保存的内容中。从我的研究“插入或合并”的“upsert”是正确的方法。

  • 如何获取C#语言以允许保存动态属性列表?

  • 原始XML编辑是实现此目的的唯一方法吗?


More information on Upsert and InsertOrMerge is available here


有关我的特定问题的其他详细信息

我正在使用Entity对象来跟踪基本上是N长度的数组,其中N <1。 240(255是Azure表中可用的最大属性数)。数组中的每个位置都对应一个属性名称,如下所示:

 /* Note: Each number is prefixed by "a" since properties can't start with a number and I like it when all properties have the same length */

public class MyFatEntity
{

public string A01 {get;set;}

public string A02 {get;set;}

// ..

public string A10 {get;set;}

// ..

public string AF0 {get;set;}

}

我需要能够将字符串与数组的任何特定位置匹配。我计划用这个投影。

我预见的一个问题是,如果我创建一个包含240个属性的大型胖对象,那么我就会消耗存储带宽并产生不需要存在的低效率。

更不用说这些额外的属性,即使是null,也将计入我的最大实体大小。这是不可取的,因为内在开销意味着我将有更少的空间来保存更长记录的数据。

1 个答案:

答案 0 :(得分:0)

我已经在CodePlex和NuGet上编写了一个开源客户端Lucifure Stash,它允许您将数组保存到Azure Table Storage,每列一个数组元素。

Lucifure Stash还通过字典支持动态属性,非常适合“插入合并”。 (CodePlex

它不支持的是能够查询单个数组元素。请注意,除非查询受到严格的分区和/或行键范围的约束,否则对非关键元素的查询可能效率低下。