Entity Framework (CF, C#)에서 SaveChanges
/SaveChangesAsync
을 호출 할 때 변경 충돌이 발생하면 (예 : 마지막 읽기 이후 값이 업데이트 된 경우) DbUpdateConcurrencyException
OR OptimisticConcurrencyException
내가 잡을 까?Entity Framework의 동시성 예외
그리고 그 차이점은 무엇입니까?
Entity Framework (CF, C#)에서 SaveChanges
/SaveChangesAsync
을 호출 할 때 변경 충돌이 발생하면 (예 : 마지막 읽기 이후 값이 업데이트 된 경우) DbUpdateConcurrencyException
OR OptimisticConcurrencyException
내가 잡을 까?Entity Framework의 동시성 예외
그리고 그 차이점은 무엇입니까?
DbUpdateConcurrencyException
은 DbContext
에 의해 예외가 발생하므로이 값을 잡으십시오. 이 예외는 내부에있는 OptimisticConcurrencyException
에 의해 발생할 수 있지만, 그렇다면이 예외는 내부 예외로 래핑됩니다.
모든 업데이트 예외가 동시성에 의한, 그래서 당신은 또한이 DbUpdateConcurrencyException
잡는 후 DbUpdateException
을 잡으려고가되지는 않습니다 (후자 때문에 것은 DbUpdateException
의 하위 유형입니다).
도 참조하십시오. Entity framework 5.0 handle optimistic concurrency exception?.
답변 해 주셔서 감사합니다. 가장 가능성이 높은 것으로 보입니다. 두 예외를 모두 잡으려고 시도하고 어떤 일이 일어날 지 살펴 보겠습니다. 링크 주셔서 감사합니다. – Flair
네, 물론 동시성 때문에 모든 예외가 발생하지는 않지만, 저는 그러한 종류의 예외에 대해서만 우려하고 있습니다. (질문에서 언급했듯이 : 데이터 상태가 db에서 변경되면 데이터와 사용자의 SaveChanges '호출). 내 목적을 위해'DbUpdateConcurrency' 예외가 충분해야한다고 생각합니까? 좀 더 구체적으로, Entity Framework의 Linq-2-SQL에서'ChangeConflictException'을 어떻게 모방합니까? – Flair
'DbUpdateConcurrencyException '을 잡는 것은 timestamp/rowversion 열 또는'ConcurrencyMode.Fixed' 열 (DbContext API에있는 경우)에 의해 구성된대로 EF에서 낙관적 동시성과 관련된 모든 것을 처리해야합니다. http://msdn.microsoft.com/ko-kr/data/jj592904.aspx를 참조하십시오. 잡는 순서가 중요하기 때문에'DbUpdateException'에 대해서 언급했습니다. –
OptimisticConcurrencyException
이 표시됩니다. this을보십시오.
이제 diffrence가 나타납니다.
대답에 비추어 볼 때, 문서에서 예외를 찾아보고 그 설명을 읽으면서 몇 초만 생각해 보셨습니까? 기본적으로 설명서를 인용하십시오. – TomTom
물론, 나는 설명서를 읽었지만 두 가지 모두 상당히 비슷해 보였으므로별로 이해가되지 않습니다. 'optimistic 동시성 예외가 발생할 수있을 때 사용하십시오'. 그래서 나는 내 질문에 상황을 제시하고 그 맥락에서 물었다! – Flair
DbUpdateException, DbUpdateConcurrencyException, OptimisticConcurrencyException에 대한 Flair 문서에 동의하며 동시성 예외 관리에 대해 무엇을 잡아야하는지 명확히 알 수 없습니다. –