1

我正在尝试使用 ADO.NET 数据集存储经过轻微过滤的数据库副本以供离线参考。有些专栏我不需要随身携带。到目前为止,看起来我的选择是:

  • 忍受列
  • SELECT对我为 DataSet 行的方式变得难以维护
  • 破解 XML 输出以删除列

我已经删除了 DataSet 设计器中的列条目。WriteXMl仍然输出它们,令我沮丧。如果有办法将WriteXml' 的输出限制为键入的行,我很想听听。

我试图用仔细的SELECT语句过滤掉这些列,但最终得到了一个ConstraintException我无法解决的问题。替换一个表的查询就可以SELECT *了。我怀疑如果有足够的时间我可以解决异常。我还怀疑随着我们发展模式,它可能会再次出现。我不想把这样的维护问题交给我的继任者。

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

我可以改变DataSet的行为吗?我应该过滤 XML 吗?有没有一些非常简单的方法我可以查询很多,但不完全是,所有内容都不会遇到ConstraintException?还是我的方法完全错误?非常感谢您的建议。

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

4

1 回答 1

0

这很容易Table.Columns.Remove("UnwantedColumnName")我从 Mehrdad 对另一个问题的简洁回答中得到了线索。Table.Columns当结果证明是可塑的时,我很高兴。

于 2009-01-12T06:14:43.170 回答