2012-09-13 4 views
2

두 개의 SQL 테이블이 있습니다. 각 테이블에는 세 개의 다른 정수 필드로 이루어진 복합 키가 있습니다. Table1에 레코드를 추가하기 위해 다음과 같이 코드를 추가했습니다.일부 상황에서 DuplicateKeyException이 throw되지 않습니다.

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. 
} 

이 내가 계획 한 정확히 어떻게 작동하고 사용자가 중복 행을 추가하려고 나는 모든 괜찮 등 그들에게 메시지를 표시 할 수있는 경우 예외를 잡는다. 그러나 (그러나 다른의 DataContext를 사용하여 다른 페이지에, 거의 동일) 표 2에 삽입 내가 가지고있는 코드,

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

테이블 1 및 테이블 2 SQL DDL을 참조하여 DB에 필드 및 키를 설정 한 방법을 알려야합니다. – n8wrl

+0

DataContext를 살펴보십시오. 어떤 이유로 Table2 (LINQ 측)는 제약 조건을 인식하지 못하거나 강제하지 않습니다. – Paparazzi

답변

0

테이블의 정의에 문제가 있어야합니다. 2. 특히 기본 키 열이 있어야합니다. 어쩌면 그것은 Unique Constraint을 가지고 있기 때문에 그것이 예외를 던지는 이유입니다. 그러나 확실히 그것의 기본 키가 아닙니다.

관련 문제