Search code examples
c#datatabledatasetxml-serializationstrongly-typed-dataset

Strongly typed dataset - XML Serialization


I have a typed dataset in my project and i need to import data from XML. I managed to import data to Tables collection in my typed dataset, but I need to have access to the data via Annotations - properties named the same as tables in my dataset.

this.ConfigDataSet.Reset();
this.ConfigDataSet.ReadXml(FileName,XmlReadMode.ReadSchema);
this.ConfigDataSet.AcceptChanges();

Do I have to copy data field by field?

I have something like this:

this.ConfigDataSet.Tables["TabName"].Rows.Count //returns 3 
this.ConfigDataSet.TabName.Rows.Count //returns 0

I write xml like this:

this.ConfigDataSet.AcceptChanges();
this.ConfigDataSet.WriteXml(FileName,XmlWriteMode.WriteSchema);

Solution

  • Solution:

    WriteXml:

                    ConfigDataSet.WriteXml(FileName);
    

    ReadXml:

                        using (DataSet ds = new DataSet())
                    {
                        ds.ReadXml(FileName);
                        ConfigDataSet.Load(ds.Tables[0].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName1);
                        ConfigDataSet.Load(ds.Tables[1].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName2);
                        ConfigDataSet.Load(ds.Tables[2].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName3);
                        ConfigDataSet.Load(ds.Tables[3].CreateDataReader(), LoadOption.OverwriteChanges, ConfigDataSet.TableName4);
                    }
    

    It is required to load each table separately, but it is better than load each field row by row.

    Regards, Kuba.