如何将DataSet.WriteXML输出限制为类型化列?

时间:2009-01-12 06:03:53

标签: ado.net dataset strongly-typed-dataset

我正在尝试使用ADO.NET DataSet存储一个轻度过滤的数据库副本以供离线引用。我需要一些的专栏。到目前为止,看起来我的选择是:

  • 列出专栏
  • 对于DataSet
  • SELECT行的方式变得难以理解
  • 在XML输出处删除以删除列

我删除了DataSet设计器中的列条目。令我沮丧的是,WriteXMl仍然输出它们。 如果有办法将WriteXml的输出限制为打字行,我很乐意听到。

我尝试使用谨慎的SELECT语句过滤掉列,但最终得到了ConstraintException我无法解决的问题。用SELECT *替换一个表的查询就可以了。我怀疑如果有足够的时间我可以解决这个例外。我还怀疑它会在我们改进模式时再次出现。我不想把这样的维护问题交给我的继任者。

总而言之,我认为过滤XML输出最简单。我需要压缩它,存储它,然后(稍后)加载,解压缩,然后将其读回DataSet。过滤XML只是又一步 - 而且更好的是,每周只需要进行一次。

我可以更改DataSet的行为吗?我应该过滤XML吗?是否有一些非常简单的方法我可以查询相当多,但不完全,没有遇到ConstraintException的一切?或者我的方法完全错了?我非常感谢你的建议。

更新:事实证明我解决ConstraintException的原因很简单:我忘了从一个DataTable中删除强类型列。不允许NULL。当我选择列之外的所有列时,值为NULL,并且......是的,这非常令人尴尬,非常感谢您的提问。

1 个答案:

答案 0 :(得分:0)

就像 Table.Columns.Remove("UnwantedColumnName")一样简单。我从中获得了领先优势 Mehrdad's wonderfully terse answer to another question。当Table.Columns被证明具有可塑性时,我很高兴。