Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/azure/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# DynamicTableEntity分区键和行键_C#_Azure_Dynamic Tables - Fatal编程技术网

C# 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",

我创建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”。我该怎么做呢?

简单的答案是你不能
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
        };
    }
}