private void DeserializeDataSetSchema(SerializationInfo info, StreamingContext context, SerializationFormat remotingFormat, SchemaSerializationMode schemaSerializationMode)
{
if (remotingFormat != SerializationFormat.Xml)
{
if (schemaSerializationMode == SchemaSerializationMode.IncludeSchema)
{
//DataSet public state properties
DeserializeDataSetProperties(info, context);
//Tables Count
int tableCount = info.GetInt32("DataSet.Tables.Count");
//Tables, Columns, Rows
for (int i = 0; i < tableCount; i++)
{
byte[] buffer = (byte[])info.GetValue(string.Format(CultureInfo.InvariantCulture, "DataSet.Tables_{0}", i), typeof(byte[]));
MemoryStream memStream = new MemoryStream(buffer);
memStream.Position = 0;
BinaryFormatter bf = new BinaryFormatter(null, new StreamingContext(context.State, false));
DataTable dt = (DataTable)bf.Deserialize(memStream);
Tables.Add(dt);
}
//Constraints
for (int i = 0; i < tableCount; i++)
{
Tables[i].DeserializeConstraints(info, context, /* table index */i, /* serialize all constraints */ true); //
}
//Relations
DeserializeRelations(info, context);
//Expression Columns
for (int i = 0; i < tableCount; i++)
{
Tables[i].DeserializeExpressionColumns(info, context, i);
}
}
else
{
//DeSerialize DataSet public properties.[Locale, CaseSensitive and EnforceConstraints]
DeserializeDataSetProperties(info, context);
}
}
else
{
string strSchema = (string)info.GetValue(KEY_XMLSCHEMA, typeof(string));
if (strSchema != null)
{
ReadXmlSchema(new XmlTextReader(new StringReader(strSchema)), true);
}
}
}