1
首先,我告訴我的DataSet如何通過xsd文件來解釋xml。問題的XML元素應該是一個KeyValuePair,在我的xsd的corrosponding行看起來像DataSet如何知道如何解析xml文件中的元素?
<xs:element name="MyKeyValuePair" msdata:DataType="System.Collections.Generic.KeyValuePair`2[[System.Guid, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089],[System.String, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089]], mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" type="xs:anyType" />
的XSD加載到DataSet如下:
myDataSet.ReadXmlSchema(new StringReader(myXsdString));
這工作得很好,我可以檢查在調試器中,列的DataType是正確的(我有一些字符串,一些雙打,一些System.Guid等,當然 - 我的KeyValuePair)。然後,我
myDataSet.ReadXml(new StringReader(myXmlString));
的XML看起來加載XML這樣的
<DataSet>
<DataTable>
<MyGuid>8F6FC345-5362-4518-B652-0CC3AD54901E</MyGuid>
<MyKeyValuePair>[67b7fdd1-2079-4311-a7a3-cd2fb0b31384, myValue]</MyKeyValuePair>
<MyBool>0</MyBool>
</DataTable>
</DataSet>
所有類型的正確分析,但顯然在DataSet不知道如何解析通用KeyValuePair。如何告訴DataGrid如何解析特定的類型?我的猜測是以某種方式使用TypeConverters,但究竟如何? Thanx
您如何認爲/想要將K-V對編碼到數據庫中? – 2010-12-16 18:11:46
那暫時不重要。在.NET中的ToString方法會產生「[key,value]」,所以我可能會在TSQL中將這樣的字符串拼接在一起,但它會更好,如果我只把鍵放入我的xml和一些額外的xml描述字典映射這些對的元素。 該應用程序是我將一張表映射到DataGrid,並將外鍵顯示爲Combobox以供選擇。在這個Combobox中,我想顯示一個可讀的描述,而不是guid ... – 2010-12-17 08:38:24