c# - C#:SessiosnStateモードSqlServerで使用するためにデータセットをシリアル化可能にする

原文 c#

Webベースのアプリケーションがあり、データセットを使用して情報を保存しています。私たちはこれらのデータセットをセッションに格納し、Ajax呼び出し中にセッションから取得して更新していました。
当時、セッション状態はInProcでした。

次に、セッションデータをSql Severに保存します。セッションに保存するには、データセットを作成する必要があります[Serializable]

通常のデータセットを使用してテストしますが、正常に機能しますが、この場合、DataSetから継承してDataSetを作成します。

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()
{
}
}


私の問題は、[Serializable]属性で装飾されていても、このオブジェクトをシリアル化できないことです。


このデータセットをSQLServerセッションモードで格納し、それを取得する方法。
正常にシリアル化されますが、sqlserverからデータを取得するときに次のエラーが発生します。
タイプ 'OurDataSet'のオブジェクトを逆シリアル化するコンストラクターが見つかりませんでした。


ありがとう
答え
DataSetはカスタムシリアル化(ISerializable)を使用します。つまり、サポートコンストラクターを追加する必要があります。

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


基本実装はすべての詳細を処理する必要があることに注意してください。何も追加する必要はありません。これは、デフォルトのコンストラクタに追加される可能性があります。

public OurDataSet() {}
関連記事

c# - 特定のアセンブリからの未処理の例外のみを処理する

c# - ウェブサイト-クラスのコンパイル-サーバーでの更新

c# - COM for RPCをC++からC#に使用する

c# - 参照自体のコピーを作成しますか?

c# - 組み込みMySQLサーバーC#ラッパー?

c# - aspx.csファイルからユーザーコントロールのradiobuttonlistにアクセスする方法

c# - C#ProcessStartInfoでのprivoxyの実行

c# - NUnitからFacebook C#SDKを使用する

c# - Saxon XSLTがパラメーターを渡す

c# - エンティティフレームワークの複数テーブルクエリ