Visual studio Visual Studio数据集设计器Null

Visual studio Visual Studio数据集设计器Null,visual-studio,null,dataset,designer,Visual Studio,Null,Dataset,Designer,Visual Studio 2008存在一个错误,即无法使用数据集设计器将int类型字段设置为可为空。(有返回到Visual Studio 2005的错误报告,但似乎从未解决过这一问题。) 唯一可选择的行为是在从数据库传回null值时发出引发异常的代码,而不是将值设置为null,这将要求数据类型为“int?”而不是“int”。 现实世界中的一个例子是,由于依赖对象尚未分配,外键为null 除了1,不使用VisualStudio数据集,2,还有其他合理的解决方法吗。将数据类型更改为string(允

Visual Studio 2008存在一个错误,即无法使用数据集设计器将int类型字段设置为可为空。(有返回到Visual Studio 2005的错误报告,但似乎从未解决过这一问题。)

唯一可选择的行为是在从数据库传回null值时发出引发异常的代码,而不是将值设置为null,这将要求数据类型为“int?”而不是“int”。 现实世界中的一个例子是,由于依赖对象尚未分配,外键为null

除了1,不使用VisualStudio数据集,2,还有其他合理的解决方法吗。将数据类型更改为string(允许null,但会否定强类型,并强制进行多次转换),或3。更改发出的代码(如果通过设计器对数据集进行了任何更改,则会覆盖该代码)。

请尝试

我怀疑作者也经历了很多你不得不经历的事情,包括手工更新数据集设计器代码(刚刚重新生成)和使用分部类

在VS2008中,对他有效的是手动编辑DataSet.xsd文件,为他需要修复的列添加以下值:

msprop:nullValue="-1" 
nillable="true"
这样做的目的是返回-1代替null,并且没有错误

作者给出了一个完整的专栏编辑示例,如下所示:

<xs:element name=“FolderParent_ID” msprop:nullValue=“-1” nillable=“true” msprop:Generator_UserColumnName=“FolderParent_ID” msprop:Generator_ColumnVarNameInTable=“columnFolderParent_ID” msprop:Generator_ColumnPropNameInRow=“FolderParent_ID” msprop:Generator_ColumnPropNameInTable=“FolderParent_IDColumn” type=“xs:int” minOccurs=“0” />

编辑和保存数据集时,这些更新不会丢失

公平警告:我从未尝试过此代码。有人在作者的博客上评论说,这在VS2008中对他不起作用(请查看“Tom”发布的第二条评论)。不过,汤姆确实提出了一个解决办法


我希望它对您有用。

在connect.microsoft.com主题(由Danila Korablin提出)上有一个建议的解决方法,该方法演示了一种黑客攻击,它提供了修复数据集的可用替代方法

简而言之,它使用myDataSet.cs模块中的分部类作为存储库,用于向row类添加可为null的属性。您可以在代码中访问这些属性,但不能在设计器中访问。这种添加属性的方式也不能替换原来损坏的属性

“数据源”窗口也不会显示以这种方式添加到数据集类的属性。如果试图通过添加正确的可空类型的列来修复MS生成的数据表类,则数据源可视化工具无法理解这些列,从而使数据集无效,因此它不会显示任何内容。这意味着您无法使用Visual Studio的内置设计器访问正确类型的列

这一缺陷使得像复制包含可空列的行这样简单的操作变得不可能

我可以验证VisualStudio2005的数据集设计器中不支持可为空的列。微软一再明确表示,他们不会解决这个问题