シナリオは次のとおりです。多くの変数、数百を含むメッセージを受け取ります。私はこれをAzure Tableストレージに書き込む必要があります。このストレージでは、パーティションキーが個々の変数の名前であり、値は、値。AutoMapper:多くのプロパティを1つにマッピングする
のは、ペイロードは、次のようになりましょう:
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回コピーしたくありません(またはペイロードmに何個の変数があるかエッセージ;これは固定数です)。
私はテーブルを作成する方法を作ることができましたが、私はまだこれを900回呼び出さなければなりません。
私はおそらくAutoMapperが助けになると考えました。
追加情報ペイロードには常にすべてのプロパティが含まれます。 TableのSignalプロパティの値は、Valueに "put"するプロパティの名前である必要があります。たとえば、payload.Fooがtable.Valueにマップされている場合、table.Signalは「Foo」でなければなりません。 –