Xml 数据集列可以为NULL,但不能转换为字符串?

Xml 数据集列可以为NULL,但不能转换为字符串?,xml,string,null,dataset,Xml,String,Null,Dataset,我有一个字符串,如果它不是空的,它可以是空的,因为它包含一个xml文档。问题是DataType System.String的此dataset列中允许空值 错误消息:此.MetaData“引发了类型为”System.Data.StrongTypingException“的异常 base{System.SystemException}={“表'GMyTAbleName'中列'MyData'的值为DBNull。”} 更新 以下是原因的屏幕截图: 您可以看到它如何尝试将NULL转换为应该返回的字符串

我有一个字符串,如果它不是空的,它可以是空的,因为它包含一个xml文档。问题是DataType System.String的此dataset列中允许空值

错误消息:此.MetaData“引发了类型为”System.Data.StrongTypingException“的异常

base{System.SystemException}={“表'GMyTAbleName'中列'MyData'的值为DBNull。”}

更新

以下是原因的屏幕截图:

您可以看到它如何尝试将NULL转换为应该返回的字符串


该代码来自DataSet.Designer.cs文件,如何更改该行为S

首先考虑使用
DataRow
上的
IsNull
方法测试列


我从来没有喜欢过DBNull.:)

好的,我让它工作了。我将在此处列出以下步骤:

1.)

选择此:(空)以使空值作为String.Empty返回

2.)因为现在我们知道string.empty不是有效的xml字符串,所以我在相应属性的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;                                     
    }
}

即使我要测试它,数据集中也确实有这样的测试,但是当它为Null且允许为Null时,问题是数据集无法将Null转换为空字符串,这就是错误所说的。@msfanboy:我同意你的观点。其思想是,在确定强类型列不为null之前,保护自己不访问该列,因为您知道如果在getter为null时访问它,将得到一个StrongTypingException。我知道这很乏味;避免DBNull是我采用LINQ如此快的原因之一。thx为您加油,我也喜欢LINQ,但不能在这里使用它:/我用这个问题的屏幕截图更新了第一篇帖子!