Example #1
0
        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);
        }
Example #2
0
        /// <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);
Example #7
0
 /// <summary>
 /// Adds from main model.
 /// </summary>
 /// <param name="referenceToAdd">The IEdmReference to add.</param>
 public void AddParentModelReferences(IEdmReference referenceToAdd)
 {
     this.parentModelReferences.Add(referenceToAdd);
 }
Example #8
0
 /// <summary>
 /// Adds from main model.
 /// </summary>
 /// <param name="referenceToAdd">The IEdmReference to add.</param>
 public void AddParentModelReferences(IEdmReference referenceToAdd)
 {
     this.parentModelReferences.Add(referenceToAdd);
 }