我有一个字符串,如果它不为空,则可以为空,它包含一个xml文档。问题是DataType System.String的此数据集列中允许空值。
错误消息:this.MetaData'引发了类型'System.Data.StrongTypingException'的异常
base {System.SystemException} = {“表'GMyTAbleName'中列'MyData'的值为DBNull。”}
更新
这是原因的截图:
http://666kb.com/i/bld3eelnaicsgb9tv.png
你看到它如何尝试将NULL转换为应该返回的字符串。
该代码来自DataSet.Designer.cs文件,我该如何更改该行为? :S
答案 0 :(得分:0)
首先使用IsNull
上的DataRow
方法测试列。
我从来没有像DBNull那样做过。 :)
答案 1 :(得分:0)
好的,我让它工作了。我将列出这里的步骤:
1。)http://msdn.microsoft.com/en-us/library/ya91ataz(vs.71).aspx
选择此项:(空)将null值作为String.Empty返回。
2。)因为我们现在的string.empty不是一个有效的xml-string,所以我在适当的属性的getter中检查了它。
private XmlDocument XMLMyData
{
get
{
XmlDocument doc = new XmlDocument();
if (this.MyData.Trim().Length > 0)
doc.LoadXml(this.MyData); // return xml-string in the xml document
else if (String.IsNullOrEmpty(this.MyData))
return doc; // return empty xml document
return doc;
}
}