저는 Entity Framework 6을 사용하여 EF를 통해 Primary/Foreign/Unique Key 제약과 같은 몇 가지 공통적 인 문제를 처리하려고했습니다. EF는 으로 SqlException
을 제공합니다. 지금까지 발견 한 바에 따르면 실제 문제를 이해하는 유일한 방법은 SqlException
개체의 오류 코드를 사용하는 것입니다.SqlExceptions 추상화 (Entity Framework 사용)
나는 이러한 예외를 EF 예외를 포착하고 InnerException
의 오류 코드를 분석하여 예외를 던져서 추상화하려고합니다. 그 시점에서 몇 가지 고려 사항이 있습니다.
SQL Server 코드는 서버 버전에 따라 달라 지거나 변경되지 않습니까? 다른 버전의 SQL Server를 다른 방식으로 처리해야 2008, 2012 등의 다른 구현을 만들 수 있습니까?
SQL Server 대신 MySQL과 같은 다른 SQL Server를 사용할 수 있으며 이러한 이유 중 하나는 예외를 추상화하려고합니다. 예를 들어
는 that 질문의 허용 대답에, 나는 캐치 특정 오류를 싶지만, 대신 rethrowing의 나는 내 자신의 예외 (들)을 던져 싶습니다. 특수한 작업을 수행하고 싶지 않거나 오류에 대한 특별한 예외가없는 경우 원래 예외를 해당 일반 예외 InnerException
필드에 저장할 수있는보다 일반적인 예외를 만들고 사용할 수 있습니다.
나는 블로그 게시물 this을 읽었으며 불행히도 문제의 경우는 나의 첫 번째 방법이었습니다. 가능한 한 제 3 자 라이브러리를 사용하지 않고이 작업을하고 싶습니다. (물론 이것이 더 중요하지는 않습니다.) 나는이 일을하는 데 시험되고 받아 들여지는 방법이 있는지 궁금해합니다. 그렇지 않으면 어떤 제안이든 열려 있습니다.
하지만 수정해야 할 코드에 제약 조건 같은 것이 있습니까? 따라서 예외를 잡기를 원하지는 않을 것입니다. –
아니요 가능할 때마다 복구하고 싶습니다 (예 : 클라이언트가 데이터베이스에있는 사용자를 추가하려고합니다). 그러나 EF 예외는 오류 코드만큼 세부 정보를 알려주지 않습니다. 이러한 오류 코드를 해석하고 EF 코드 대신 내 자신의 예외를 던지고 싶습니다. 그게 명확한가요? – Deniz
그래, 내가 무슨 말하는지 알 겠어. 당신이 덮어 씌우지 않았는지, 앱이 정말로 추락하고 싶다는 오류가 있는지 확인해야 해. –