Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > ASP .Net > Serializing classes derived from dataset

Reply
Thread Tools

Serializing classes derived from dataset

 
 
Aidan Glendye
Guest
Posts: n/a
 
      07-28-2003
Hi,

I am trying to store various objects within session. Due
to the site being hosted in a web farm we are going to
have to use either State Server or SQL Server to persist
the data in session. All of the objects are classes which
inherit from a typed dataset.

Looking at MSDN I have found the following two (what I
believe to be) relevent statements (from article Object
Serialization in the .NET Framework):

"Derived classes should call the GetObjectData method on
the base object if the latter implements ISerializable"

and

"When you derive a new class from one that implements
ISerializable, the derived class must implement both the
constructor as well as the GetObjectData method if it has
any variables that need to be serialized."

Since the Dataset implements ISerializable the above
statements indicate that I should override the
GetObjectData method. However if I try and override this
method I get a compile error stating:

"sub 'GetObjectData' cannot be declared 'Overrides'
because it does not override a sub in a base class."

I am also unable to call the method GetObjectData on the
base class as it is not accessible.

The classes which I am trying to persist have their own
properties, some of which are themselves objects which
inherit from datasets.

If I create a test class which inherits from a typed
dataset, and which has two additional properites (named
Property1 and Property2) the following XML is persisted:

<?xml version="1.0" encoding="utf-16"?>
<xs:schema id="dsTemp"
targetNamespace="http://tempuri.org/dsTemp.xsd"
xmlns:mstns="http://tempuri.org/dsTemp.xsd"
xmlns="http://tempuri.org/dsTemp.xsd"
xmlnss="http://www.w3.org/2001/XMLSchema"
xmlns:msdata="urn:schemas-microsoft-comml-msdata"
attributeFormDefault="qualified"
elementFormDefault="qualified">
<xs:element name="dsTemp" msdata:IsDataSet="true"
msdataroperty1="1" msdataroperty2="Aidan">
<xs:complexType>
<xs:choice maxOccurs="unbounded">
<xs:element name="InvoiceHeader">
<xs:complexType>
<xs:sequence>
<xs:element name="InvoiceHeaderID"
msdata:ReadOnly="true" msdata:AutoIncrement="true"
type="xs:int" />
<xs:element name="POHeaderID" type="xs:int"
minOccurs="0" />
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:choice>
</xs:complexType>
<xs:unique name="dsTempKey1" msdatarimaryKey="true">
<xs:selector xpath=".//mstns:InvoiceHeader" />
<xs:field xpath="mstns:InvoiceHeaderID" />
</xs:unique>
</xs:element>
</xs:schema>

Note that the properties have been serialized, but have
been serialized as "<xs:element name="dsTemp"
msdata:IsDataSet="true" msdataroperty1="1"
msdataroperty2="Aidan">"

I can find no way in which I can de-serialize these fields.

Can someone please explain how I can have a class which
inherits from a dataset, and which I can then serialize
and de-serialize without losing the properties.

Thanks in advance

Aidan
 
Reply With Quote
 
 
 
 
Aidan Glendye
Guest
Posts: n/a
 
      07-28-2003
Note that the xml which should have been displayed
indicated that the properties were included in a dataset
element as

msdataroperty1="1"
msdataroperty2="Aidan"


>-----Original Message-----
>Hi,
>
>I am trying to store various objects within session. Due
>to the site being hosted in a web farm we are going to
>have to use either State Server or SQL Server to persist
>the data in session. All of the objects are classes

which
>inherit from a typed dataset.
>
>Looking at MSDN I have found the following two (what I
>believe to be) relevent statements (from article Object
>Serialization in the .NET Framework):
>
>"Derived classes should call the GetObjectData method on
>the base object if the latter implements ISerializable"
>
>and
>
>"When you derive a new class from one that implements
>ISerializable, the derived class must implement both the
>constructor as well as the GetObjectData method if it has
>any variables that need to be serialized."
>
>Since the Dataset implements ISerializable the above
>statements indicate that I should override the
>GetObjectData method. However if I try and override this
>method I get a compile error stating:
>
>"sub 'GetObjectData' cannot be declared 'Overrides'
>because it does not override a sub in a base class."
>
>I am also unable to call the method GetObjectData on the
>base class as it is not accessible.
>
>The classes which I am trying to persist have their own
>properties, some of which are themselves objects which
>inherit from datasets.
>
>If I create a test class which inherits from a typed
>dataset, and which has two additional properites (named
>Property1 and Property2) the following XML is persisted:
>
><?xml version="1.0" encoding="utf-16"?>
><xs:schema id="dsTemp"
>targetNamespace="http://tempuri.org/dsTemp.xsd"
>xmlns:mstns="http://tempuri.org/dsTemp.xsd"
>xmlns="http://tempuri.org/dsTemp.xsd"
>xmlnss="http://www.w3.org/2001/XMLSchema"
>xmlns:msdata="urn:schemas-microsoft-comml-msdata"
>attributeFormDefault="qualified"
>elementFormDefault="qualified">
> <xs:element name="dsTemp" msdata:IsDataSet="true"
>msdataroperty1="1" msdataroperty2="Aidan">
> <xs:complexType>
> <xs:choice maxOccurs="unbounded">
> <xs:element name="InvoiceHeader">
> <xs:complexType>
> <xs:sequence>
> <xs:element name="InvoiceHeaderID"
>msdata:ReadOnly="true" msdata:AutoIncrement="true"
>type="xs:int" />
> <xs:element name="POHeaderID" type="xs:int"
>minOccurs="0" />
> </xs:sequence>
> </xs:complexType>
> </xs:element>
> </xs:choice>
> </xs:complexType>
> <xs:unique name="dsTempKey1" msdatarimaryKey="true">
> <xs:selector xpath=".//mstns:InvoiceHeader" />
> <xs:field xpath="mstns:InvoiceHeaderID" />
> </xs:unique>
> </xs:element>
></xs:schema>
>
>Note that the properties have been serialized, but have
>been serialized as "<xs:element name="dsTemp"
>msdata:IsDataSet="true" msdataroperty1="1"
>msdataroperty2="Aidan">"
>
>I can find no way in which I can de-serialize these

fields.
>
>Can someone please explain how I can have a class which
>inherits from a dataset, and which I can then serialize
>and de-serialize without losing the properties.
>
>Thanks in advance
>
>Aidan
>.
>

 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Derived::Derived(const Base&) and Derived& operator=(const Base&) developereo@hotmail.com C++ 1 05-23-2007 01:44 PM
Derived::Derived(const Base&) and Derived& operator=(const Base&) developereo@hotmail.com C++ 1 05-23-2007 12:07 AM
Serializing a derived class deja@2bytes.co.uk ASP .Net Web Services 0 09-12-2006 11:33 AM
Vector of abstract classes filled with derived classes ? Manuel C++ 8 01-05-2006 09:07 PM
Base Classes in .exe, derived classes in .dll Colin Goudie C++ 6 01-26-2004 03:18 PM



Advertisments