我按如下方式创建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);
结果创建了一个包含列的表:“Id”,“Mode”,“PartitionKey”,“RowKey” 我想更改“PartitionKey”,“RowKey”的名称,即我希望env是partitionKey但是列名是“Env”。我该怎么办?
答案 0 :(得分:6)
虽然您无法重命名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
};
}
}
答案 1 :(得分:5)
简单的答案是,你不能。 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);