internal void SerializeTableSchema(SerializationInfo info, StreamingContext context, bool isSingleTable)
{
//DataTable basic properties
info.AddValue("DataTable.TableName", TableName);
info.AddValue("DataTable.Namespace", Namespace);
info.AddValue("DataTable.Prefix", Prefix);
info.AddValue("DataTable.CaseSensitive", _caseSensitive);
info.AddValue("DataTable.caseSensitiveAmbient", !_caseSensitiveUserSet);
info.AddValue("DataTable.LocaleLCID", Locale.LCID);
info.AddValue("DataTable.MinimumCapacity", _recordManager.MinimumCapacity);
//DataTable state internal properties
info.AddValue("DataTable.NestedInDataSet", _fNestedInDataset);
info.AddValue("DataTable.TypeName", TypeName.ToString());
info.AddValue("DataTable.RepeatableElement", _repeatableElement);
//ExtendedProperties
info.AddValue("DataTable.ExtendedProperties", ExtendedProperties);
//Columns
info.AddValue("DataTable.Columns.Count", Columns.Count);
//Check for closure of expression in case of single table.
if (isSingleTable)
{
List<DataTable> list = new List<DataTable>();
list.Add(this);
if (!CheckForClosureOnExpressionTables(list))
{
throw ExceptionBuilder.CanNotRemoteDataTable();
}
}
IFormatProvider formatProvider = CultureInfo.InvariantCulture;
for (int i = 0; i < Columns.Count; i++)
{
//DataColumn basic properties
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.ColumnName", i), Columns[i].ColumnName);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.Namespace", i), Columns[i]._columnUri);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.Prefix", i), Columns[i].Prefix);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.ColumnMapping", i), Columns[i].ColumnMapping);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.AllowDBNull", i), Columns[i].AllowDBNull);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.AutoIncrement", i), Columns[i].AutoIncrement);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.AutoIncrementStep", i), Columns[i].AutoIncrementStep);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.AutoIncrementSeed", i), Columns[i].AutoIncrementSeed);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.Caption", i), Columns[i].Caption);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.DefaultValue", i), Columns[i].DefaultValue);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.ReadOnly", i), Columns[i].ReadOnly);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.MaxLength", i), Columns[i].MaxLength);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.DataType", i), Columns[i].DataType);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.XmlDataType", i), Columns[i].XmlDataType);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.SimpleType", i), Columns[i].SimpleType);
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.DateTimeMode", i), Columns[i].DateTimeMode);
//DataColumn internal state properties
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.AutoIncrementCurrent", i), Columns[i].AutoIncrementCurrent);
//Expression
if (isSingleTable)
{
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.Expression", i), Columns[i].Expression);
}
//ExtendedProperties
info.AddValue(string.Format(formatProvider, "DataTable.DataColumn_{0}.ExtendedProperties", i), Columns[i]._extendedProperties);
}
//Constraints
if (isSingleTable)
{
SerializeConstraints(info, context, 0, false);
}
}