2 Stimmen

C# : Dataset serialisierbar machen zur Verwendung im SessiosnState-Modus SqlServer

Wir haben eine webbasierte Anwendung, in der wir die Informationen in einem Datensatz speichern. Wir haben diese Datensätze in Sessions gespeichert und sie während des Ajax-Aufrufs aus den Sessions geholt und aktualisiert. Zu dieser Zeit war der Sitzungsstatus InProc.

Jetzt wollen wir die Sitzungsdaten in Sql Sever speichern, um sie in der Sitzung zu speichern, müssen wir das Dataset [Serializable] machen.

Ich teste mit normalen Datasets es funktioniert gut, aber in unserem Fall erstellen wir unsere DataSets durch Erben von DataSet wie

public class OurDataSet : DataSet
{
#constants
all the column names are used in all the tables are used as Constants.

#constructor
// add all the related tables
public OurDataSet()
{
this.Tables.Add(OurDataTable());
}
public static DataTable OurDataTable()
{
}
}

Mein Problem ist, dass ich dieses Objekt nicht serialisieren kann, auch wenn es mit dem Attribut [Serializable] dekoriert ist.

  1. Wie kann ich diesen Datensatz im SQLServer-Sitzungsmodus speichern und wieder abrufen?
  2. Es serialisieren gut, aber gibt mir den folgenden Fehler auf die Daten zurück von Sqlserver erhalten. Der Konstruktor zum Deserialisieren eines Objekts vom Typ 'OurDataSet' wurde nicht gefunden.

Danke

2voto

Marc Gravell Punkte 970173

DataSet verwendet eine benutzerdefinierte Serialisierung ( ISerializable ) - was bedeutet, dass Sie einen unterstützenden Konstruktor hinzufügen müssen:

protected OurDataSet(SerializationInfo information, StreamingContext context)
    : base(information, context) {}

Beachten Sie, dass die Basisimplementierung alle Details regeln sollte - Sie müssen nichts hinzufügen. Dies kann zusätzlich zu einem Standardkonstruktor sein:

public OurDataSet() {}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X