2009-10-31 164 views
2

Visual Studio 2008有一個錯誤,因爲您無法使用數據集設計器將int類型字段設置爲空。 (有錯誤報告回到Visual Studio 2005,但它似乎從未被解決。)Visual Studio Dataset Designer Null

唯一的可選行爲是發出代碼,如果從數據庫傳回空值而引發異常,而不是將該值設置爲null,這將要求數據類型爲「int?」而不是「int」。 現實世界中的示例情況是當外鍵爲空時,因爲依賴對象尚未分配。

是否存在除1以外的任何明智的解決方法,而不是使用Visual Studio數據集; 2.將數據類型更改爲字符串(允許null,但否定強類型的強制並強制執行多次強制轉換);或者3.更改發出的代碼(如果通過設計人員對數據集進行了任何更改,則將被覆蓋)。

回答

2

嘗試this link

我懷疑作者跳過了很多相同的箍環,包括手動更新DataSet設計器代碼(只是重新生成)和部分類的使用。

什麼在VS2008爲他工作是編輯的數據集.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中不適合他(查看「湯姆」發表的第二條評論)。湯姆確實提出了一個修復。

我希望它適合你。

+0

似乎爲我們在這裏工作 – hawbsl 2010-01-19 11:24:19

0

在connect.microsoft.com主題(Danila Korablin提供的Nullable types for typed dataset)上提出了一種解決方法,它說明了修復數據集可用的替代方法。

簡而言之,它使用myDataSet .cs模塊中的部分類作爲向行類添加可空屬性的存儲庫。您可以在代碼中訪問這些屬性,但不能在設計器中訪問。這種添加屬性的方式也不能代替原來的破壞。

「數據源」窗口也不會顯示以這種方式添加到數據集類的屬性。如果您嘗試通過添加正確可爲空的類型的列來修復MS生成的數據表類,則數據源可視化工具不理解它們,使數據集無效,因此它不顯示任何內容。這意味着您無法使用Visual Studio的內置設計器訪問正確類型的列。

這種不足使操作變得非常簡單,因爲複製包含不可空列的行是不可能的。

我可以驗證Visual Studio 2005的數據集設計器中不支持可空列。微軟一再明確表示他們不會解決這個問題。

相關問題