我正在尝试使用ADO.NET DataSet存储一个轻度过滤的数据库副本以供离线引用。我需要一些不的专栏。到目前为止,看起来我的选择是:
SELECT
行的方式变得难以理解
我删除了DataSet设计器中的列条目。令我沮丧的是,WriteXMl
仍然输出它们。 如果有办法将WriteXml
的输出限制为打字行,我很乐意听到。
我尝试使用谨慎的SELECT
语句过滤掉列,但最终得到了ConstraintException
我无法解决的问题。用SELECT *
替换一个表的查询就可以了。我怀疑如果有足够的时间我可以解决这个例外。我还怀疑它会在我们改进模式时再次出现。我不想把这样的维护问题交给我的继任者。
总而言之,我认为过滤XML输出最简单。我需要压缩它,存储它,然后(稍后)加载,解压缩,然后将其读回DataSet。过滤XML只是又一步 - 而且更好的是,每周只需要进行一次。
我可以更改DataSet
的行为吗?我应该过滤XML吗?是否有一些非常简单的方法我可以查询相当多,但不完全,没有遇到ConstraintException
的一切?或者我的方法完全错了?我非常感谢你的建议。
更新:事实证明我解决ConstraintException
的原因很简单:我忘了从一个DataTable中删除强类型列。不允许NULL
。当我选择除列之外的所有列时,值为NULL
,并且......是的,这非常令人尴尬,非常感谢您的提问。
答案 0 :(得分:0)
就像 Table.Columns.Remove("UnwantedColumnName")
一样简单。我从中获得了领先优势
Mehrdad's wonderfully terse answer to another question。当Table.Columns
被证明具有可塑性时,我很高兴。