我正在尝试使用 ADO.NET 数据集存储经过轻微过滤的数据库副本以供离线参考。有些专栏我不需要随身携带。到目前为止,看起来我的选择是:
- 忍受列
SELECT
对我为 DataSet 行的方式变得难以维护- 破解 XML 输出以删除列
我已经删除了 DataSet 设计器中的列条目。WriteXMl
仍然输出它们,令我沮丧。如果有办法将WriteXml
' 的输出限制为键入的行,我很想听听。
我试图用仔细的SELECT
语句过滤掉这些列,但最终得到了一个ConstraintException
我无法解决的问题。替换一个表的查询就可以SELECT *
了。我怀疑如果有足够的时间我可以解决异常。我还怀疑随着我们发展模式,它可能会再次出现。我不想把这样的维护问题交给我的继任者。
总而言之,我认为过滤 XML 输出是最简单的。我需要对其进行压缩、存储,然后(稍后)加载、解压缩并将其读回 DataSet。过滤 XML 只是又一步——而且更好的是,只需要每周左右进行一次。
我可以改变DataSet
的行为吗?我应该过滤 XML 吗?有没有一些非常简单的方法我可以查询很多,但不完全是,所有内容都不会遇到ConstraintException
?还是我的方法完全错误?非常感谢您的建议。
更新:事实证明我ConstraintException
出于一个简单的原因:我忘记从一个 DataTable 中删除一个强类型列。这是不允许的NULL
。当我选择除该列之外的所有列时,值为NULL
, 和……而且,是的,这非常令人尴尬,非常感谢您的提问。