이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 3308|회답: 0

[출처] EF 동시성 예외 DbUpdateConcurrencyException은 캐시된 값을 재쿼리합니다

[링크 복사]
게시됨 2023. 11. 1. 오후 8:30:43 | | | |
요구사항: 동시성을 제어하기 위해 EF 낙관적 락을 사용하고, 동시성이 발생하면 재시도 메커니즘을 추가하고, 재시도 후 재쿼리되는 데이터가 EF 캐시 데이터임을 확인하여 항상 예외를 저장합니다.

데이터베이스 연산은 원래 1행에 영향을 줄 것으로 예상되었으나, 실제로는 0행에 영향을 주었습니다; 엔티티가 로드된 이후 데이터가 수정되거나 삭제되었을 수 있습니다. 보다하이퍼링크 로그인이 보입니다.낙관적 동시성 예외를 이해하고 처리하는 방법에 대한 정보입니다.

이 논의는 EF 6.x와 EF Core 쿼리 캐싱에 대한 생각으로 이어졌습니다:하이퍼링크 로그인이 보입니다.

동시 타임스탬프와 동시성 확인 구분 처리
https://www.itsvse.com/thread-3616-1-1.html

아래에 나와 있습니다:



SQL 스크립트:

ASP.NET Core 6 백엔드 코드:

컨트롤러 코드:



옵션 1 (추천)

쓰다EntityState.Detached엔티티 상태를 컨텍스트에 의해 추적되지 않는다고 표시하고, 다음과 같이 수정하세요:

아래에 나와 있습니다:



옵션 2

Reload() 메서드를 호출해 엔티티 객체를 새로고침하세요. 코드는 다음과 같습니다:

재로드는 EF 캐시 값도 새로고침할 수 있지만,이로 인해 SQL 쿼리가 한 번 이상 실행됩니다따라서 권장되지 않습니다.

나머지 두 방법인 AsNoTracking은 적합하지 않고, 다른 하나는 테스트되지 않았습니다.

(끝)




이전의:.NET은 데이터베이스의 varbinary 문자열을 바이트[] 배열로 변환합니다
다음:실행 명령을 부팅하기 위해 OpenWRT 설정을 사용하세요
면책 조항:
Code Farmer Network에서 발행하는 모든 소프트웨어, 프로그래밍 자료 또는 기사는 학습 및 연구 목적으로만 사용됩니다; 위 내용은 상업적 또는 불법적인 목적으로 사용되지 않으며, 그렇지 않으면 모든 책임이 사용자에게 부담됩니다. 이 사이트의 정보는 인터넷에서 가져온 것이며, 저작권 분쟁은 이 사이트와는 관련이 없습니다. 위 내용은 다운로드 후 24시간 이내에 컴퓨터에서 완전히 삭제해야 합니다. 프로그램이 마음에 드신다면, 진짜 소프트웨어를 지원하고, 등록을 구매하며, 더 나은 진짜 서비스를 받아주세요. 침해가 있을 경우 이메일로 연락해 주시기 바랍니다.

Mail To:help@itsvse.com