在Windows Azure表存储中,没有允许自动递增ID的“类型”。我以为我可以使用'IsIdentity',但复选框是灰色的(这应该让我自动递增,对吧?)。
有人可以告诉我如何获得自动递增字段或解决方法吗?
谢谢!
答案 0 :(得分:7)
除非出于某种原因,您实际上需要单调增加数字键,否则使用DateTime.UtcNow.Ticks.ToString()
是常用方法。 (因为Table Storage上的PartitionKey值是一个字符串,所以需要将其转换。)
此方法的优点是Table Storage行由PartitionKey(然后是RowKey)自动排序,因此您将按插入顺序返回行,就像SQL Server中的IDENTITY列一样
如果您想要最近返回的记录,请改用(long.MaxValue - DateTime.UtcNow.Ticks).ToString()
。
请注意,第一种方法将为接下来的1158年提供一个18位数的数字。如果您想避免Y3160错误,请考虑使用前导零(DateTime.UtcNow.Ticks.ToString("0000000000000000000")
)填充该值。
第二种方法确实会在很长一段时间内给出一个19位数的数字,超过DateTime.MaxValue,所以你可能就好了。
还要记住,使用负载平衡等等,如果两台服务器在同一时间创建一条记录,那么你将获得重复的可能性非常小,所以你应该有重试语义来增加键值一个人。