反序列化从xsd文件创建的数据表/数据集

时间:2016-12-11 03:18:20

标签: c# xml serialization datatable xsd

我使用ReadXmlSchema(“file.xsd”)创建了一个数据集。 xsd文件的数据类型类似于“STRING_50”。在调试时,似乎我看不到数据表列的任何奇怪数据类型,即数据表正确填充数据,列的数据类型是字符串或int32。

但问题是当我反序列化(代码:new BinaryFormatter()。反序列化(流))服务器端的数据表时,我确实收到此错误: {“调用目标引发了异常。”} {“类型'STRING_50'未声明,或者不是简单类型。”} 要么 {“类型'INTEGER'未声明,或者不是简单类型。”}

似乎这些类型不可序列化。但是我怎样才能使它们可序列化?为什么当我查看表列的数据类型时,我只找到字符串和Int32,我不会得到像string_50或INTEGER这样的奇怪类型? 如何反序列化我的数据表?

我尝试过肮脏的工作并且有效。我创建了一个新的数据表(我将其称为datatable2),我刚刚将原始数据表(datatable1)中的值复制到datatable2。当我将datatable2发送到服务器时,它可以工作。但我真的想避免这种解决方法。我想知道datatable1的问题是什么,我不想要一个额外的嵌套循环来将数据复制到另一个数据表(datatable2)。

我还为datatable1和datatable2执行了命令dt.WriteXml(path,XmlWriteMode.WriteSchema)。对于datatable1,我得到“对象引用未设置为实例...”,但对于datatable2,它工作得非常好。正如我所提到的,datatable2包含datatable1中的所有数据,以及相同数量的列和列名称。

0 个答案:

没有答案