出于各种原因,我必须将类型化数据集发送到 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/