在Azure Table存储分区键中使用冒号会产生奇怪的结果
问题描述:
我遇到了一个真正令人困惑的情况,我希望能得到一些帮助。此代码:在Azure Table存储分区键中使用冒号会产生奇怪的结果
TableOperation retrieveOperation = TableOperation.Retrieve<T>(partitionKey, rowKey);
TableResult result = await table.ExecuteAsync(retrieveOperation);
T obj = result.Result as T;
问题是与分区键,这是在表格上“发表:UID”,例如:Post:f45ff69958e14342970a6ea88e7a009f
。 插入和检索数据是好的,但是让我疯狂的是,当我在检索到对象之后检查对象时,PartitionKey的“Post:”部分已从对象数据中剥离。创建对象中的分区键只是f45ff69958e14342970a6ea88e7a009f
。这意味着如果我对该对象进行了更改并尝试执行一个操作,它将会在冒号后面创建一条新记录。我不能为了我的生活理解这会如何发生。
我曾尝试谷歌非法字符在分区键,但无法找到任何关于冒号是非法字符,所以很抱歉,如果这是一个常见问题。
任何帮助,将不胜感激。
答
冒号不是分区键的非法字符。有关受限字符的更多信息,请参见this页面上的“在字段中禁用的字符”部分。
基于上面的代码片段,我创建了一个生成相同长度和相同“Post:”前缀的GUID的循环,但没有重现该问题。如果问题仍然存在,请发布重现问题所需的整段代码。
也许你应该只编码PartitionKey? PartitionKey和RowKey的确有一些非法字符,但我还没有听说过之前冒号列表。对不起,我不能更有帮助。 –