public void WriteXml(XmlWriter writer, XmlWriteMode mode, bool writeHierarchy) { IntPtr hscp; Bid.ScopeEnter(out hscp, "<ds.DataTable.WriteXml|API> %d#, mode=%d{ds.XmlWriteMode}\n", ObjectID, (int)mode); try{ if (this.tableName.Length == 0) { throw ExceptionBuilder.CanNotSerializeDataTableWithEmptyName(); } // Generate SchemaTree and write it out if (writer != null) { if (mode == XmlWriteMode.DiffGram) { // FIX THIS // Create and save the updates new NewDiffgramGen(this, writeHierarchy).Save(writer, this); } else { // Create and save xml data if (mode == XmlWriteMode.WriteSchema) { DataSet ds = null; string tablenamespace = this.tableNamespace; if (null == this.DataSet) { ds = new DataSet(); // if user set values on DataTable, it isn't necessary // to set them on the DataSet because they won't be inherited // but it is simpler to set them in both places // if user did not set values on DataTable, it is required // to set them on the DataSet so the table will inherit // the value already on the Datatable ds.SetLocaleValue(_culture, _cultureUserSet); ds.CaseSensitive = this.CaseSensitive; ds.Namespace = this.Namespace; ds.RemotingFormat = this.RemotingFormat; ds.Tables.Add(this); } if (writer != null) { XmlDataTreeWriter xmldataWriter = new XmlDataTreeWriter(this, writeHierarchy); xmldataWriter.Save(writer, /*mode == XmlWriteMode.WriteSchema*/true); } if (null != ds) { ds.Tables.Remove(this); this.tableNamespace = tablenamespace; } } else { XmlDataTreeWriter xmldataWriter = new XmlDataTreeWriter(this, writeHierarchy); xmldataWriter.Save(writer,/*mode == XmlWriteMode.WriteSchema*/ false); } } } } finally { Bid.ScopeLeave(ref hscp); } }
public void WriteXml(XmlWriter writer, XmlWriteMode mode, bool writeHierarchy) { long logScopeId = DataCommonEventSource.Log.EnterScope("<ds.DataTable.WriteXml|API> {0}, mode={1}", ObjectID, mode); try { if (_tableName.Length == 0) { throw ExceptionBuilder.CanNotSerializeDataTableWithEmptyName(); } // Generate SchemaTree and write it out if (writer != null) { if (mode == XmlWriteMode.DiffGram) { // Create and save the updates new NewDiffgramGen(this, writeHierarchy).Save(writer, this); } else { // Create and save xml data if (mode == XmlWriteMode.WriteSchema) { DataSet ds = null; string tablenamespace = _tableNamespace; if (null == DataSet) { ds = new DataSet(); // if user set values on DataTable, it isn't necessary // to set them on the DataSet because they won't be inherited // but it is simpler to set them in both places // if user did not set values on DataTable, it is required // to set them on the DataSet so the table will inherit // the value already on the Datatable ds.SetLocaleValue(_culture, _cultureUserSet); ds.CaseSensitive = CaseSensitive; ds.Namespace = Namespace; ds.RemotingFormat = RemotingFormat; ds.Tables.Add(this); } if (writer != null) { XmlDataTreeWriter xmldataWriter = new XmlDataTreeWriter(this, writeHierarchy); xmldataWriter.Save(writer, /*mode == XmlWriteMode.WriteSchema*/true); } if (null != ds) { ds.Tables.Remove(this); _tableNamespace = tablenamespace; } } else { XmlDataTreeWriter xmldataWriter = new XmlDataTreeWriter(this, writeHierarchy); xmldataWriter.Save(writer,/*mode == XmlWriteMode.WriteSchema*/ false); } } } } finally { DataCommonEventSource.Log.ExitScope(logScopeId); } }