private JNode PrepareSaveBundle(IEnumerable <IEntity> entitiesToSave, SaveOptions saveOptions) { var jn = new JNode(); jn.AddArray("entities", entitiesToSave.Select(e => EntityToJNode(e))); jn.AddJNode("saveOptions", saveOptions); return(jn); }
private JNode BuildEntityAspectNode(EntityAspect entityAspect) { var nc = entityAspect.EntityManager.MetadataStore.NamingConvention; var jn = new JNode(); var entityType = entityAspect.EntityType; jn.AddPrimitive("entityTypeName", entityType.NameOnServer); jn.AddEnum("entityState", entityAspect.EntityState); jn.AddPrimitive("defaultResourceName", entityType.DefaultResourceName); jn.AddJNode("originalValuesMap", BuildOriginalValuesMapNode(entityAspect, nc)); var agkType = entityType.AutoGeneratedKeyType; if (agkType != AutoGeneratedKeyType.None) { var agkNode = new JNode(); agkNode.AddPrimitive("propertyName", entityType.KeyProperties[0].Name); agkNode.AddEnum("autoGeneratedKeyType", agkType); jn.AddJNode("autoGeneratedKey", agkNode); } return(jn); }
JNode IJsonSerializable.ToJNode(Object config) { lock (_structuralTypes) { var jo = new JNode(); jo.AddPrimitive("metadataVersion", MetadataVersion); // jo.Add("name", this.Name); // jo.AddPrimitive("namingConvention", this.NamingConvention.Name); jo.AddJNode("namingConvention", this.NamingConvention); // jo.AddProperty("localQueryComparisonOptions", this.LocalQueryComparisonOptions); jo.AddArray("dataServices", this._dataServiceMap.Values); jo.AddArray("structuralTypes", this._structuralTypes); jo.AddMap("resourceEntityTypeMap", this._resourceNameEntityTypeMap.ToDictionary(kvp => kvp.Key, kvp => kvp.Value.Name)); return(jo); } }
private JNode DataToJNode(StructuralAspect aspect) { var jn = new JNode(); var stype = aspect.StructuralType; stype.DataProperties.ForEach(dp => { var val = aspect.GetValue(dp.Name); // handle nonscalar dps if (dp.IsComplexProperty) { jn.AddJNode(dp.NameOnServer, DataToJNode(((IComplexObject)val).ComplexAspect)); } else { jn.AddPrimitive(dp.NameOnServer, val, TypeFns.GetDefaultValue(dp.DataType.ClrType)); } }); return(jn); }
private JNode DataToJNode(StructuralAspect aspect) { var jn = new JNode(); var stype = aspect.StructuralType; stype.DataProperties.ForEach(dp => { var val = aspect.GetValue(dp.Name); // handle nonscalar dps if (dp.IsComplexProperty) { jn.AddJNode(dp.NameOnServer, DataToJNode(((IComplexObject)val).ComplexAspect)); } else { // always add the val even if equal to the default jn.AddPrimitive(dp.NameOnServer, val); } }); return(jn); }