У меня есть следующий формат документа в MongoDB
Документ 1:
{
"_id" : ObjectId("5b0d30ae942267c0c8f6229d"),
"Expression" : "[tag] = 'Druck1' && [status]='OK'",
"Name" : "Druck1 is running",
"Actions" : [
{
"TemplateName" : "Warning",
"Tags" : "[tag]",
"Roles" : [
"Group_AdUser",
"Group_FieldServiceCoordinator",
"Group_FieldServiceTechnician",
"Group_Roaster",
"Group_ServiceAdmin",
"Group_ServiceManager",
"Group_ServiceSales",
"Group_TSCUser",
"Group_WorkshopRepairCoordinator"
],
"IsActive" : true,
"SequenceNo" : 0,
"Type" : "EventMessageAction"
}
],
"IsActive" : true,
"TargetUsers" : null,
"TargetGroups" : null,
"Type" : "Rule"
}
Документ 2:
{
"_id" : ObjectId("5b0bc01fcd8d2966e0fdf2f2"),
"Expression" : "HasProperty('category') && [category] = 'Temperature'",
"Name" : "RTF Machine Temperature (History Data)",
"Actions" : [
{
"Table" : "[machinename]",
"Key" : "'RTF'",
"Value" : "[value]",
"Timestamp" : "[timestamp]",
"ExpirationDate" : "[timestamp]",
"Icon" : "''",
"Color" : "''",
"Text" : "''",
"Category" : "[category]",
"IsActive" : true,
"Type" : "HistoryDataAction",
"SequenceNo" : 0
}
],
"IsActive" : true,
"TargetUsers" : null,
"TargetGroups" : null,
"Type" : "Rule"
}
Есть ли способ, я могу получитьвыше запись о моих сущностях, как показано ниже:
Правило Entity:
[DataContract]
public abstract class Rule
{
[DataMember]
public string Expression { get; set; }
[DataMember]
public string Name { get; set; }
[DataMember]
public IEnumerable<Action> Actions { get; set; }
[DataMember]
public bool IsActive { get; set; }
}
Действие Entity:
public class Action
{
}
History Действие Entity:
[DataContract]
public class HistoryDataAction : Action
{
public HistoryDataAction()
{
}
[DataMember]
[JsonProperty("table")]
public string TableExpression { get; set; }
[DataMember]
[JsonProperty("key")]
public string KeyExpression { get; set; }
[DataMember]
[JsonProperty("value")]
public string ValueExpression { get; set; }
[DataMember]
[JsonProperty("timestamp")]
public string TimestampExpression { get; set; }
[DataMember]
[JsonProperty("expiration_date")]
public string ExpirationDateExpression { get; set; }
[DataMember]
[JsonProperty("icon")]
public string IconExpression { get; set; }
[DataMember]
[JsonProperty("color")]
public string ColorExpression { get; set; }
[DataMember]
[JsonProperty("text")]
public string TextExpression { get; set; }
[DataMember]
[JsonProperty("category")]
public string CategoryExpression { get; set; }
[DataMember]
[JsonProperty("is_active")]
public bool IsActive { get; set; }
[DataMember]
[JsonProperty("type")]
public virtual string Type
{
get { return this.GetType().Name; }
}
[DataMember]
[JsonProperty("sequence_no")]
public int SequenceNo { get; set; }
}
Event Action Data:
[DataContract]
public class EventMessageAction : Action
{
public EventMessageAction()
{
}
[DataMember]
public string TemplateName { get; set; }
[DataMember]
public string Tags { get; set; }
[DataMember]
public List<string> Roles { get; set; }
[DataMember]
public bool IsActive { get; set; }
[DataMember]
public int SequenceNo { get; set; }
[DataMember]
public virtual string Type { get; set; }
}
Есть ли что-то вроде TypeNameHandling, которого мы достигаем с помощью $ type, доступного для MongoDB.Мне нужно получить список документов и сопоставить его с моей сущностью.Если типом действия является HistoryDataAction, то он должен перейти к объекту HistoryDataAction, в противном случае для объекта EventMessageAction.
Обычная коллекция. Функция Find () здесь не работает.Он успешно дает мне сущность Rule, но не связывает сущность Action.