internal void VisitEdmReferences(IEdmModel model, IEdmReference reference) { this.schemaWriter.WriteReferenceElementHeader(reference); if (reference.Includes != null) { foreach (IEdmInclude include in reference.Includes) { this.schemaWriter.WritIncludeElementHeader(include); WriteAnnotations(model, include); this.schemaWriter.WriteIncludeElementEnd(include); } } if (reference.IncludeAnnotations != null) { foreach (IEdmIncludeAnnotations includeAnnotations in reference.IncludeAnnotations) { this.schemaWriter.WriteIncludeAnnotationsElement(includeAnnotations); } } WriteAnnotations(model, reference); this.schemaWriter.WriteReferenceElementEnd(reference); }
/// <summary> /// Build the JSON value <see cref="JsonElement"/> to collection of <see cref="IEdmReference"/>. /// It's weird that we parse it into IEdmReference, not CsdlReference. /// It is because CsdlModel needs "IEdmReference". :-( /// </summary> /// <param name="element">The input JSON element.</param> /// <param name="jsonPath">The parser context.</param> /// <returns>null or parsed collection of <see cref="IEdmReference"/>.</returns> internal static IList <IEdmReference> ParseReferences(JsonElement element, JsonParserContext context) { // The value of $Reference is an object that contains one member per referenced CSDL document. if (!element.ValidateValueKind(JsonValueKind.Object, context)) { return(null); } IList <IEdmReference> references = new List <IEdmReference>(); element.ParseAsObject(context, (url, propertyValue) => { IEdmReference reference = ParseReference(url, propertyValue, context); if (reference != null) { references.Add(reference); } }); return(references); }
internal void WriteReferenceElementHeader(IEdmReference reference) { // e.g. <edmx:Reference Uri="http://host/schema/VipCustomer.xml"> this.xmlWriter.WriteStartElement(CsdlConstants.Prefix_Edmx, CsdlConstants.Element_Reference, this.edmxNamespace); this.WriteRequiredAttribute(CsdlConstants.Attribute_Uri, reference.Uri, EdmValueWriter.StringAsXml); }
internal override void WriteReferenceElementEnd(IEdmReference reference) { this.xmlWriter.WriteEndElement(); }
internal abstract void WriteReferenceElementEnd(IEdmReference reference);
internal abstract void WriteReferenceElementHeader(IEdmReference reference);
/// <summary> /// Adds from main model. /// </summary> /// <param name="referenceToAdd">The IEdmReference to add.</param> public void AddParentModelReferences(IEdmReference referenceToAdd) { this.parentModelReferences.Add(referenceToAdd); }