2012-09-13 55 views
2

我有兩個SQL表,每個表都有一個由三個不同整數字段組成的複合鍵。我已經添加了如下代碼以向Table1添加記錄。在某些情況下不會引發DuplicateKeyException

try 
{ 
    Table1 newRow = new Table1 
    { 
     DomainID = domainID, 
     ConfigurationID = configID, 
     ReasonID = reasonID 
    }; 

    data.Table1.InsertOnSubmit(newRow); 
    data.SubmitChanges(); 
} 
catch(DuplicateKeyException) 
{ 
    // Message to user about no duplicates allowed. 
} 

這工作正是我如何有計劃,如果用戶試圖添加重複的行,我可以給他們發送消息等,一切都很好捕獲異常。但是,代碼我有用於插入到表2(其幾乎是相同的,在使用不同的DataContext然而不同的頁),

try 
{ 
    Table2 newRow = new Table2 
    { 
     DomainID = domainID, 
     ConfigurationID = configID, 
     DirectionID = directionID 
    }; 

    data.Table2.InsertOnSubmit(newRow); 
    data.SubmitChanges(); 
} 
catch(DuplicateKeyException) 
{ 
    // Message to user about no duplicates allowed. 
}  

不會引發DuplicateKeyException而是SQLEXCEPTION。不是一個太大的大交易,因爲我仍然可以測試在抓SQLEXCEPTION

e.Number = 2627 

,但我只是困惑,爲什麼它正在不同!?

+1

需要查看Table1和Table2 SQL DDL來告訴您如何設置數據庫中的字段和鍵 – n8wrl

+0

查看DataContext。出於某種原因,Table2(LINQ端)不知道該約束或不執行它。 – Paparazzi

回答

0

表2的定義必定存在問題。具體來說就是使用主鍵列。也許它有一個Unique Constraint,這就是爲什麼它會拋出一個異常,但它不是它的主要關鍵。

相關問題