Rob*_*rch 6 .net azure azure-table-storage
背景
我从客户端接收CSV数据文件,其中包含我不需要的大量数据以及我所做的少量数据.在将来,我可能需要访问该数据,虽然我正在归档原始数据文件,但我希望能够更容易地查询.我希望一个解决方案并不意味着数据文件保持相同的格式 - 即客户端可能添加/删除列,我不希望我的实现保留丢失的数据或无法存档其他数据.
当我在Azure中构建应用程序时,Azure表存储对我来说是正确的 - 我可以读取数据文件,然后将我读取的任何键/值对存储到数据存储中.
结果
我想知道如何存储Dictionary<K, V>或Hashtable或在Azure中的一些其他键/值对.
Rob*_*rch 10
通过重写从TableEntity派生的类上的ReadEntity和WriteEntity方法,可以存储其他属性.
这是我的天真实施
public class TestEntity : TableEntity {
public TestEntity(string a, string b) {
PartitionKey = a;
RowKey = b;
DataItems = new Dictionary<string, string>();
}
public Dictionary<string, string> DataItems { get; set; }
public override IDictionary<string, EntityProperty> WriteEntity(OperationContext operationContext) {
var results = base.WriteEntity(operationContext);
foreach (var item in DataItems) {
results.Add("D_" + item.Key, new EntityProperty(item.Value));
}
return results;
}
public override void ReadEntity(IDictionary<string, EntityProperty> properties, OperationContext operationContext) {
base.ReadEntity(properties, operationContext);
DataItems = new Dictionary<string, string>();
foreach (var item in properties) {
if (item.Key.StartsWith("D_")) {
string realKey = item.Key.Substring(2);
ItemData[realKey] = item.Value.StringValue;
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
我注意到Azure表存储只能存储255个键/值对 - 或者一旦考虑PartitionKey等就会存储252个自定义键,因此这也必须在某处处理.
| 归档时间: |
|
| 查看次数: |
4854 次 |
| 最近记录: |