Yak*_*kov 4 c# dynamic-tables azure
我创建DynamicTableEntity如下:
string env = "envTest";
stting ver = "1.0";
siring id = "12356";
string mode = "verify";
DynamicTableEntity entryEntity = DynamicTableEntity(env,ver);
entryEntity.Properties.Add("Id", id);
entryEntity.Properties.Add("Mode", mode);
Run Code Online (Sandbox Code Playgroud)
结果创建了一个包含列的表:"Id","Mode","PartitionKey","RowKey"我想更改"PartitionKey","RowKey"的名称,即我希望env成为partitionKey但是列名称为"Env".我该怎么做?
虽然您无法重命名PartitionKey和RowKey,但您可以直接从表中解析为DTO.
我发现将数据投射到不同的受众群体(即非管理员的有限视图等)非常方便
HTH
var query = MyEntityDBO.CreateQuery<DynamicTableEntity>()
.Where(x => x.PartitionKey.Equals("Blah"))
.Resolve(MyEntityDTO.GetEntityResolver());
var segment = await query.ExecuteSegmentedAsync(new TableContinuationToken());
if(segment.Results.Count > 0) {
// Results = IEnumerable<MyEntityDTO>
}
public class MyEntityDTO
{
public string Id { get; set; }
public string Mode { get; set; }
public string Env { get; set; }
public string Ver { get; set; }
public static EntityResolver<MyEntityDTO> GetEntityResolver()
{
return (pk, rk, ts, props, etag) =>
{
Env = pk,
Ver = rk,
Id = props["Id"].StringValue,
Mode = props["Mode"].StringValue
};
}
}
Run Code Online (Sandbox Code Playgroud)
简单的答案是您不能。PartitionKey并且RowKey是系统定义的属性(以及Timestamp),您无法更改其名称。您可以做的是为定义另外两个自定义属性,Env以及Ver是否需要在应用程序中通过这些名称访问属性。
DynamicTableEntity entryEntity = DynamicTableEntity(env,ver);
entryEntity.Properties.Add("Id", id);
entryEntity.Properties.Add("Mode", mode);
entryEntity.Properties.Add("Env", env);
entryEntity.Properties.Add("Ver", ver);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2502 次 |
| 最近记录: |