场景如下:我收到一条包含很多变量的消息,数百个。我需要将此写入 Azure 表存储,其中分区键是各个变量的名称,并且值被映射到例如值。
假设有效负载如下所示:
public class Payload
{
public long DeviceId { get; set; }
public string Name { get; set; }
public double Foo { get; set; }
public double Rpm { get; set; }
public double Temp { get; set; }
public string Status { get; set; }
public DateTime Timestamp { get; set; }
}
我的 TableEntry 是这样的:
public class Table : TableEntity
{
public Table(string partitionKey, string rowKey)
{
this.PartitionKey = partitionKey;
this.RowKey = rowKey;
}
public Table() {}
public long DeviceId { get; set; }
public string Name { get; set; }
public double Value { get; set; }
public string Signal { get; set; }
public string Status { get; set; }
}
为了将其写入表存储,我需要
var table = new Table(primaryKey, payload.Timestamp.ToString(TimestampFormat))
{
DeviceId = payload.DeviceId,
Name = payload.Name,
Status = payload.Status,
Value = value (payload.Foo or payload.Rpm or payload.Temp),
Signal = primarykey/Name of variable ("foo" or "rmp" or "temp"),
Timestamp = payload.Timestamp
};
var insertOperation = TableOperation.Insert(table);
await this.cloudTable.ExecuteAsync(insertOperation);
我不想复制这 900 次(或者在有效负载消息中碰巧有多少变量;这是一个固定的数字)。
我可以创建一个方法来创建表,但我仍然需要调用 900 次。
我想也许 AutoMapper 可以帮忙。