C# Azure表存储的设计查询

C# Azure表存储的设计查询,c#,asp.net-mvc,azure,azure-table-storage,C#,Asp.net Mvc,Azure,Azure Table Storage,我有两个C#MVC型号 信号模型 设备信号模型 SignalModel==>包含信号的属性 DeviceSignalModel==>包含与设备相关的所有信号属性 因此,除了DeviceSignalModel需要额外的DeviceID属性外,这两个属性都应该是相同的 模型SignalModel将包含列==>id、名称、单位、范围。。。 表示Azure存储表信号 我使用下面的命令从表信号 TableOperation retOp = TableOperation.Retrieve<Signal

我有两个C#MVC型号

  • 信号模型
  • 设备信号模型
  • SignalModel
    ==>包含信号的属性

    DeviceSignalModel
    ==>包含与设备相关的所有信号属性

    因此,除了
    DeviceSignalModel
    需要额外的DeviceID属性外,这两个属性都应该是相同的

    模型
    SignalModel
    将包含列==>id、名称、单位、范围。。。 表示Azure存储表
    信号

    我使用下面的命令从表
    信号

    TableOperation retOp = TableOperation.Retrieve<SignalModel>(..,..,..);
    TableResult tr = table.Execute(retOp);
    
    为了从devicesignal获取数据,我使用下面的

    TableOperation retOp = TableOperation.Retrieve<DeviceSignalModel>(..,..,..);
    TableResult tr = table.Execute(retOp);
    
    TableOperation retOp=TableOperation.Retrieve(..,..);
    TableResult tr=table.Execute(retOp);
    
    通过上面的查询,我不会从devicesignal表(上面的语句(A))中获取SignalModel中表示的列的值。属性信号为空

    我的查询

    1.上述片段中的陈述(A)是否不可能

  • SignalModel中的所有属性是否都应该显式放置在DeviceSignalModel中(而不是将对象信号作为属性)
  • 如果是这样,当信号表将来发生更改(添加属性)时,避免在信号和设备信号中添加相同属性的最佳选项是什么

  • 您不能将自定义的
    SignalModel
    设置为属性类型。如果要在
    DeviceSignalModel
    实体中维护
    SignalModel
    类型对象信息,可以尝试将
    SignalModel
    类型对象序列化为JSON字符串,并将其保存为
    DeviceSignalModel
    实体的属性值。或者正如davethecoder所说,如果可能,您可以使用来存储数据


    此外,如您所述,要在Azure表服务中实现信号设备信号之间的关系,可以将SignalModel实体的特定属性放置在DeviceSignalModel实体中。此外,您可以参考了解建模关系和表设计模式Azure表服务中的。

    Azure表存储不是关系数据库,相应的API不像实体框架,因此您应该手动执行您的意图:分别获取
    DeviceSignalModel
    ,然后获取相应的
    SignalModel
    实例或将它们存储在同一个表中。SignalModel不是受支持的类型对于表存储,您需要documentDb或将对象转换为字符串。表存储在它可以存储的类型上非常有限
    TableOperation retOp = TableOperation.Retrieve<DeviceSignalModel>(..,..,..);
    TableResult tr = table.Execute(retOp);