在SqlServer的SessiosnState模式下,设置数据集可序列化

本文关键字:设置 数据集 序列化 SqlServer SessiosnState 模式 | 更新日期: 2023-09-27 18:11:47

我们有基于web的应用程序,我们使用数据集来存储信息。我们习惯于将这些数据集存储在会话中,并在Ajax调用期间从会话中获取并更新它们。此时Session State为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]属性装饰。

  1. 如何在SQLServer会话模式下存储此数据集并将其取回
  2. 它序列化很好,但给了我以下错误从sqlserver获取数据。没有找到反序列化"OurDataSet"类型对象的构造函数。

谢谢

在SqlServer的SessiosnState模式下,设置数据集可序列化

DataSet使用自定义序列化(ISerializable) -这意味着您需要添加一个支持构造函数:

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

注意基本实现应该处理所有细节——你不需要添加任何东西。这可以是对默认构造函数的补充:

public OurDataSet() {}