wcf - 使用 DataContractSerializer 序列化 DataSet 时保留 DataRowState

标签 wcf serialization dataset rowstate

出于各种原因,我必须将类型化数据集发送到 WCF 服务端点。这工作得很好,除了在反序列化时,每个 DataTable 中每一行的 RowState 都设置为“已添加”,无论它们在客户端上是什么。如果我将序列化流写入文件,我会发现 RowState 不是序列化数据的一部分。如何添加它以便可以跨服务边界保留 RowState?我认为这并不重要,但客户端进程正在运行 .net 3.5,而服务进程正在运行 .net 4.0

最佳答案

我也遇到了这个问题,并找到了一个非常简单的解决方案: 不使用数据集对象的“WriteXml”方法,而是使用 BinaryFormatter“手动”序列化对象:

BinaryFormatter bf = new BinaryFormatter();
using(FileStream fs = File.Open("datastore.dat", FileMode.Create, FileAccess.Write))
{
  bf.Serialize(fs, ds);
}

反序列化时,对象处于与之前完全相同的状态,包括行状态数据。

关于wcf - 使用 DataContractSerializer 序列化 DataSet 时保留 DataRowState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2901191/

相关文章:

java.io.NotSerializedException : sun. nio.fs.WindowsPath - 如何修复它?

r - 如何将时间格式从 1730 更改为 17 :30:00 in R?

c++ - 如何使用命名管道从 C++ 调用 WCF 方法?

iphone - 保护 WCF REST 服务以用于 iPhone 应用程序

.net - 将 System.Data.DataSet 导入 Excel 的最简单方法是什么?

python - flask 棉花糖/SqlAlchemy : Serializing many-to-many relationships

database - 使用 DataGridView 更新多个表

java - 从 Spark 数据集中选择一些列和特定列的最大值

wcf - wcf Restful 服务的命名空间问题

wcf - WCF Web.API 对于生产应用程序是否安全?