/// <summary> /// Serialize the <see cref="EdmModel" /> to the XmlWriter. /// </summary> /// <param name="model"> /// The EdmModel to serialize, mut have only one <see cref="EdmNamespace" /> and one /// <see /// cref="Core.Metadata.Edm.EntityContainer" /> /// </param> /// <param name="xmlWriter"> The XmlWriter to serialize to </param> public bool Serialize(EdmModel model, XmlWriter xmlWriter) { Check.NotNull(model, "model"); Check.NotNull(xmlWriter, "xmlWriter"); if (model.Namespaces.Count != 1 || model.Containers.Count != 1) { Validator_OnError( this, new DataModelErrorEventArgs { ErrorMessage = Strings.Serializer_OneNamespaceAndOneContainer, }); } // validate the model first var validator = new DataModelValidator(); validator.OnError += Validator_OnError; validator.Validate(model, true); if (_isModelValid) { var visitor = new EdmSerializationVisitor(xmlWriter, model.Version); visitor.Visit(model); } return(_isModelValid); }
/// <summary> /// Serialize the <see cref="EdmModel" /> to the <see cref="XmlWriter" /> /// </summary> /// <param name="dbDatabase"> The EdmModel to serialize </param> /// <param name="provider"> Provider information on the Schema element </param> /// <param name="providerManifestToken"> ProviderManifestToken information on the Schema element </param> /// <param name="xmlWriter"> The XmlWriter to serialize to </param> /// <returns> </returns> public virtual bool Serialize( EdmModel dbDatabase, string provider, string providerManifestToken, XmlWriter xmlWriter) { Check.NotNull(dbDatabase, "dbDatabase"); Check.NotNull(xmlWriter, "xmlWriter"); var visitor = new EdmSerializationVisitor(xmlWriter, dbDatabase.Version, serializeDefaultNullability: true); visitor.Visit(dbDatabase, provider, providerManifestToken); return(true); }
private void AppendMetadataItem <T>( StringBuilder builder, T item, Action <EdmSerializationVisitor, T> visitAction) where T : MetadataItem { var settings = new XmlWriterSettings { ConformanceLevel = ConformanceLevel.Fragment, Indent = true }; settings.NewLineChars += " "; builder.Append(settings.NewLineChars); using (var writer = XmlWriter.Create(builder, settings)) { var visitor = new EdmSerializationVisitor(_schemaWriter.Replicate(writer)); visitAction(visitor, item); } }