シナリオは次のとおりです。多数の変数 (数百) を含むメッセージを受け取りました。これを Azure テーブル ストレージに書き込む必要があります。パーティション キーは個々の変数の名前であり、値はたとえば Value にマップされます。
ペイロードが次のようになっているとします。
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 が役立つかもしれないと思いました。