2008-10-01 86 views
2

我收到此錯誤,但只是偶爾發生。 99.9%的時間工作正常:從數據適配器填充數據表時發生錯誤

未能啓用約束。一行或多行包含違反非空,唯一或外鍵約束的值。

有沒有人有任何想法可能是什麼原因?我只使用該數據表進行查看和不更新,因此是否可以輕鬆關閉所有約束?

回答

2

這通常發生在您的數據集上的架構正在執行您的數據庫所沒有的事情時。

Visual Studio將自動讀取模式並嘗試在數據集上設置一些主鍵,但如果您使用的視圖可能返回多行,則它將失敗。通過刪除設計器中的約束,很容易從DataSet本身刪除這些約束。

檢查以確保您的數據集不會在可能有兩行具有相同鍵的情況下強制執行主鍵,例如在將兩個表連接在一起並因此複製父表中的行的View中。 VS默認情況下會嘗試創建父表的主鍵作爲數據集的唯一約束,但視圖本身不會強制執行此類約束。

0

這個錯誤之前也可以存在,如果您使用的是XSD數據集來定義您的架構和可變長度字段(VARCHAR,等等)的最大長度在數據庫中增加,但XSD不會重新生成。

對我而言,我有一個varchar(100)數據庫字段,其文本長度爲60個字符。 XSD預計此字段的最大長度爲50(您可以在Designer.cs文件的InitClass()方法中看到此內容)。當這個記錄被加載時,我收到「無法啓用約束」錯誤消息。更新記錄以減少低於50的字段將消除錯誤。

相關問題