C# DynamicTableEntity分区键和行键
我创建DynamicTableEntity如下所示:C# DynamicTableEntity分区键和行键,c#,azure,dynamic-tables,C#,Azure,Dynamic Tables,我创建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",
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”。我该怎么做呢?简单的答案是你不能
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);
虽然不能重命名PartitionKey和RowKey,但可以直接从表中解析为DTO 我发现这种方法非常方便,可以将数据投影到不同的受众(即非管理员等的有限视图) 嗯
var query=MyEntityDBO.CreateQuery()
其中(x=>x.PartitionKey.Equals(“Blah”))
.Resolve(MyEntityDTO.GetEntityResolver());
var segment=wait query.ExecuteSegmentedAsync(新的TableContinuationToken());
如果(segment.Results.Count>0){
//结果=IEnumerable
}
公共类MyEntityDTO
{
公共字符串Id{get;set;}
公共字符串模式{get;set;}
公共字符串Env{get;set;}
公共字符串Ver{get;set;}
公共静态EntityResolver GetEntityResolver()
{
返回(主键、rk、ts、道具、etag)=>
{
Env=pk,
Ver=rk,
Id=道具[“Id”]。StringValue,
模式=道具[“模式”]。StringValue
};
}
}
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
};
}
}