protected override void DoParse(ICollection <XName> unprocessedElements) { // Ensure to parse all enum types before ConceptualProperty/ComplexConceptualProperty are parsed. // This is done so that we have enough information to decide which property to create. var csdlNamespaceName = SchemaManager.GetCSDLNamespaceName(Artifact.SchemaVersion); foreach (var element in XElement.Elements(XName.Get(EnumType.ElementName, csdlNamespaceName))) { var enumType = new EnumType(this, element); _enumTypes.Add(enumType); enumType.Parse(unprocessedElements); } base.DoParse(unprocessedElements); }
internal override bool ParseSingleElement(ICollection <XName> unprocessedElements, XElement elem) { // Conceptual EntityModel needs to create Conceptual EntityContainer objects if (elem.Name.LocalName == BaseEntityContainer.ElementName) { if (_entityContainers.Count > 0) { // multiple EntityContainers detected, report an error var msg = String.Format(CultureInfo.CurrentCulture, Resources.TOO_MANY_ENTITY_CONTAINER_ELEMENTS, Namespace.Value); var error = new ErrorInfo( ErrorInfo.Severity.ERROR, msg, this, ErrorCodes.TOO_MANY_ENTITY_CONTAINER_ELEMENTS, ErrorClass.ParseError); Artifact.AddParseErrorForObject(this, error); } var ec = new ConceptualEntityContainer(this, elem); _entityContainers.Add(ec); ec.Parse(unprocessedElements); } else if (elem.Name.LocalName == ComplexType.ElementName) { var complexType = new ComplexType(this, elem); _complexTypes.Add(complexType); complexType.Parse(unprocessedElements); } else if (elem.Name.LocalName == UsingElement.ElementName) { var use = new UsingElement(this, elem); _usings.Add(use); use.Parse(unprocessedElements); } else if (elem.Name.LocalName == EnumType.ElementName) { // Check if enumType that represents the XElement <see DoParse method> var enumType = ModelItemAnnotation.GetModelItem(elem) as EnumType; if (enumType == null || enumType.IsDisposed) { enumType = new EnumType(this, elem); _enumTypes.Add(enumType); enumType.Parse(unprocessedElements); } } else { return(base.ParseSingleElement(unprocessedElements, elem)); } return(true); }
internal override bool ParseSingleElement(ICollection<XName> unprocessedElements, XElement elem) { // Conceptual EntityModel needs to create Conceptual EntityContainer objects if (elem.Name.LocalName == BaseEntityContainer.ElementName) { if (_entityContainers.Count > 0) { // multiple EntityContainers detected, report an error var msg = String.Format(CultureInfo.CurrentCulture, Resources.TOO_MANY_ENTITY_CONTAINER_ELEMENTS, Namespace.Value); var error = new ErrorInfo( ErrorInfo.Severity.ERROR, msg, this, ErrorCodes.TOO_MANY_ENTITY_CONTAINER_ELEMENTS, ErrorClass.ParseError); Artifact.AddParseErrorForObject(this, error); } var ec = new ConceptualEntityContainer(this, elem); _entityContainers.Add(ec); ec.Parse(unprocessedElements); } else if (elem.Name.LocalName == ComplexType.ElementName) { var complexType = new ComplexType(this, elem); _complexTypes.Add(complexType); complexType.Parse(unprocessedElements); } else if (elem.Name.LocalName == UsingElement.ElementName) { var use = new UsingElement(this, elem); _usings.Add(use); use.Parse(unprocessedElements); } else if (elem.Name.LocalName == EnumType.ElementName) { // Check if enumType that represents the XElement <see DoParse method> var enumType = ModelItemAnnotation.GetModelItem(elem) as EnumType; if (enumType == null || enumType.IsDisposed) { enumType = new EnumType(this, elem); _enumTypes.Add(enumType); enumType.Parse(unprocessedElements); } } else { return base.ParseSingleElement(unprocessedElements, elem); } return true; }
protected override void DoParse(ICollection<XName> unprocessedElements) { // Ensure to parse all enum types before ConceptualProperty/ComplexConceptualProperty are parsed. // This is done so that we have enough information to decide which property to create. var csdlNamespaceName = SchemaManager.GetCSDLNamespaceName(Artifact.SchemaVersion); foreach (var element in XElement.Elements(XName.Get(EnumType.ElementName, csdlNamespaceName))) { var enumType = new EnumType(this, element); _enumTypes.Add(enumType); enumType.Parse(unprocessedElements); } base.DoParse(unprocessedElements); }