簡體   English   中英

強類型數據集設計器會重置參數上的AllowDbNull

[英]Strongly Typed Dataset designer resets AllowDbNull on parameter

我正在更新嚴重依賴強類型數據集的現有應用程序。
最初的開發人員在每個數據集上創建了很多非常相似的查詢,以處理任何可能的參數組合,這很難更新。

因此,我只創建其中的一些,但使用可選參數,因此如果將參數設置為null,則過濾器將被忽略: WHERE (@code IS NULL OR art_code = @code)以及大多數參數。
為此,我必須手動訪問和編輯Query屬性中的Parameters集合,以將AllowDbNull設置為True (我想由於該列不可為空,設計器會自動將其設置為False

效果很好,符合預期。

問題在於,即使我不觸摸查詢,設計人員也會不斷重置此值,並且每次編輯數據集時都有很大的回歸風險。

有什么我可以防止的事情嗎?
這可能是我編寫查詢的方式嗎?

C#4.0 / Visual Studio 2012 / SQL服務器2012

確實,設計師擁有這些瑣事實在是太痛苦了。 過去,我向表或where子句介紹了偽列,這些子句永遠無法解決,只是為了讓設計者形成不同的見解

嘗試在您的查詢中添加以下內容:

WHERE ((@code IS NULL OR art_code = @code) ... other clauses ...) 
OR
--non-op to change visual studio dataSet designer behaviour, do not remove
(some_other_nullable_column_with_same_type = @code AND 0=1)

如果無法解決問題,請交換順序,這樣您的虛擬列將首先出現在where位置。

如果不奏效,你可以寫檢查數據集XML和恢復相關的改動程序,把它作為您的預生成事件,因此每次運行一個構建完成時間在電子工程設置的一部分。 該應用程序可能還必須調用dataSet生成器。 如何執行此操作我不確定自定義工具中的MSDatasetGenerator是否可能與帶有/ dataSet參數的xsd.exe不同。 至少您可以使用錯誤代碼退出dataSet修復應用程序,該應用程序將停止構建並確保出現諸如“已執行dataSet修復,右鍵單擊dataSet xx並選擇在解決方案資源管理器中運行自定義工具”之類的錯誤。到命令行

您還可以通過使用源代碼控制(例如mercurial或git)並將代碼保存在諸如bibucket之類的地方來減輕痛苦。 自將代碼保存在版本控制系統以來,我節省的工時是不可數的; 每次執行提交時,即使未更改集也更改了對dataSet進行更改的選項,即使您沒有觸摸它,該選項也將自己使用,應該在還原后需要重新編譯(很可能重新運行自定義工具)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM