在Azure EventHubTrigger Function应用中设置列

时间:2019-01-23 19:45:00

标签: c# azure azure-functions azure-eventhub

我想根据要发送到IoT中心的一些变量设置Azure表的前两列(PartitionKey和RowKey),但是我不确定我对C#的了解如何。我当前的代码如下:

#r "Microsoft.WindowsAzure.Storage"

using System;
using Microsoft.WindowsAzure.Storage.Table;

public static void Run(DataPoint myIoTHubMessage, out DataPoint outputTable, TraceWriter log)
{
   log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");

   myIoTHubMessage.PartitionKey = DateTime.Now.ToString("dd-MM-yyyy");
   myIoTHubMessage.RowKey = DateTime.Now.ToString("HH:mm:ss");

   outputTable = myIoTHubMessage;
}

public class DataPoint : TableEntity
{
   public string cameraName { get; set; }
   public string dateTime { get; set; }
   public double Area { get; set; }
}

在这里,我设法将这些行设置为当前日期和时间,但是我的意愿是将它们设置为接收到的其他变量,例如cameraNamedateTime,而无需复制它们(设法通过以下两行做到了这一点,但只是重复了列):

   myIoTHubMessage.PartitionKey = myIoTHubMessage.cameraName;
   myIoTHubMessage.RowKey = myIoTHubMessage.dateTime;

有没有办法将3个变量作为列?

1 个答案:

答案 0 :(得分:1)

我不确定我是否正确理解您,但是您希望输出具有3个属性: 分区键,行键和区域?

如果是,则尝试定义用于输出的新类并使用它返回数据:

public static void Run(DataPoint myIoTHubMessage, out OutPutData outputTable, TraceWriter log)
{
   log.Info($"C# IoT Hub trigger function processed a message: {myIoTHubMessage}");

    outputTable = new OutPutData
    {
        PartitionKey = myIoTHubMessage.cameraName,
        RowKey = myIoTHubMessage.dateTime,
        Area = myIoTHubMessage.area
    };
}

public class DataPoint : TableEntity
{
   public string cameraName { get; set; }
   public string dateTime { get; set; }
   public double Area { get; set; }
}

public class OutPutData : TableEntity
{
   public double Area { get; set; }
}