我有2个C#MVC模型
SignalModel
==> 包含Signal say MasterSignal
DeviceSignalModel
==> 包含与设备相关的所有信号属性
因此,除了DeviceSignalModel
需要具有DeviceID的附加属性外,预期两者都具有相同的属性。
模型SignalModel
将包含列==> id,名称,单位,范围......
表示Azure存储表signal
。
我使用下面的表格来获取表格signal
TableOperation retOp = TableOperation.Retrieve<SignalModel>(..,..,..);
TableResult tr = table.Execute(retOp);
我有另一个Azure存储表devicesignal
,它由模型DeviceSignalModel
表示
我将模型设计为
public class DeviceSignalModel : TableEntity, IAzureTableStorage
{
//public int DeviceSignalKey { get; set; }// RowKey for Unique Key
//public string DeviceSignalID { get; set; }// PartitionKey of Storage Table Device
public SignalModel Signal { get; set; }//<===== (A) Model here right?
要从devicesignal获取数据,请使用以下
TableOperation retOp = TableOperation.Retrieve<DeviceSignalModel>(..,..,..);
TableResult tr = table.Execute(retOp);
根据上述查询,我不会从devicesignal表(上面的语句(A))获取SignalModel中表示的列的值。我得到一个null属性信号。
我的查询
1.上述代码段中的陈述(A)不可能吗?
答案 0 :(得分:1)
您无法将自定义SignalModel
设为属性类型。如果要在SignalModel
实体中维护DeviceSignalModel
类型对象信息,可以尝试将SignalModel
类型对象序列化为JSON字符串,并将其另存为DeviceSignalModel
的属性值实体。或者正如davethecoder所说,如果可能,您可以使用Azure DocumentDB来存储您的数据。
此外,如您所述,要在Azure Table服务中实现信号和 DeviceSignal 之间的关系,将SignalModel实体的特定属性放在DeviceSignalModel实体中可能是一种方法。此外,您可以参考this article了解Azure表服务中的建模关系和表设计模式。