public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer) { var source = (Entities <T>)value; writer.WriteStartObject(); writer.WritePropertyName("Target"); writer.WriteValue(source.Target); writer.WritePropertyName("Referentials"); writer.WriteStartArray(); if (this._referenceSchema.Kind == KindSchemaEnum.Relationship) { foreach (object item in source) { writer.WriteStartObject(); ReferentialRelationship e = (ReferentialRelationship)item; foreach (var propertyName in e.PropertyKeys()) { writer.WritePropertyName(propertyName); writer.WriteValue(e[propertyName]); } writer.WritePropertyName("OriginLink"); writer.WriteStartObject(); foreach (var propertyName in e.Origin.PropertyKeys()) { writer.WritePropertyName(propertyName); writer.WriteValue(e[propertyName]); } writer.WriteEndObject(); writer.WritePropertyName("TargetLink"); writer.WriteStartObject(); foreach (var propertyName in e.Target.PropertyKeys()) { writer.WritePropertyName(propertyName); writer.WriteValue(e[propertyName]); } writer.WriteEndObject(); writer.WriteEndObject(); } } else { foreach (object item in source) { writer.WriteStartObject(); ReferentialEntity e = (ReferentialEntity)item; foreach (var propertyName in e.PropertyKeys()) { writer.WritePropertyName(propertyName); writer.WriteValue(e[propertyName]); } writer.WriteEndObject(); } } writer.WriteEndArray(); writer.WriteEndObject(); }
public RelationshipItem(ReferentialRelationship relationship, ReferentialEntity item) { this.Relationship = relationship; this.Entity = item; }
private ReferentialRelationship PopulateLink(JObject jObject, RelationshipDefinition schema) { var target = new ReferentialRelationship(this._referenceSchema.Type, _file) { Schema = this._referenceSchema, }; foreach (var item in jObject.Properties()) { if (item.Name == "OriginLink") { var i = (JObject)item.Value; foreach (var item2 in i.Properties()) { var p = schema.Origin.Properties.FirstOrDefault(c => c.Name.ToLower() == item2.Name.ToLower()); if (p != null) { try { var value = ConvertValue(p.Type, item2.Value); target.Origin[p.Name] = value; } catch (Exception e1) { this._diagnostic.Append(new DiagnositcMessage() { Severity = SeverityEnum.Error, Text = e1.Message, Exception = e1 }); } } else { } } } else if (item.Name == "TargetLink") { var i = (JObject)item.Value; foreach (var item2 in i.Properties()) { var p = schema.Target.Properties.FirstOrDefault(c => c.Name == item2.Name); if (p != null) { try { var value = ConvertValue(p.Type, item2.Value); target.Target[p.Name] = value; } catch (Exception e2) { this._diagnostic.Append(new DiagnositcMessage() { Severity = SeverityEnum.Error, Text = e2.Message, Exception = e2 }); } } else { } } } else { var p = schema.Properties.FirstOrDefault(c => c.Name == item.Name); if (p != null) { try { var value = ConvertValue(p.Type, item.Value); target[item.Name] = value; } catch (Exception e3) { this._diagnostic.Append(new DiagnositcMessage() { Severity = SeverityEnum.Error, Text = e3.Message, Exception = e3 }); } } } } return(target); }