>백엔드 개발 >C++ >내 Entity Framework 핵심 응용 프로그램에서 '두 번째 작업 시작됨' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

내 Entity Framework 핵심 응용 프로그램에서 '두 번째 작업 시작됨' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?

Barbara Streisand
Barbara Streisand원래의
2025-01-03 16:51:39763검색

Why Does My Entity Framework Core Application Throw a

Entity Framework Core: 실행 중 "두 번째 작업 시작됨" 오류 해결

ASP.Net Core 2.0 및 Entity Framework Core로 개발하는 동안 최근에 발생한 문제에서 오류 발생: "이전 작업이 완료되기 전에 이 컨텍스트에서 두 번째 작업이 시작되었습니다." 이 예외는 다음에 의해 발생됩니다. InvalidOperationException은 이전 작업이 완료되기 전에 동일한 컨텍스트에서 여러 작업이 시작되었음을 나타냅니다.

코드베이스를 조사한 결과 다양한 속성 및 관련 데이터로 엔터티 목록을 채우는 메서드가 원인으로 식별되었습니다. 문제가 있는 방법에는 포함 문을 사용하여 관련 엔터티를 통합하고 이러한 엔터티를 뷰 모델에 매핑하는 쿼리가 포함되었습니다.

근본적인 문제는 DbContext가 애플리케이션 전체에서 해결되고 활용되는 방식에 뿌리를 두고 있습니다. 종속성 주입을 위해 IoC(Inversion of Control)를 사용하는 경우 DbContext를 Transient로 등록해야 합니다. 여기에는

services.AddDbContext<MyContext>(ServiceLifetime.Transient);

대신 다음 코드 조각을 사용하는 것이 필요합니다.

services.AddTransient<MyContext>();

또는

services.AddDbContext<MyContext>();

기본 동작은 DbContext를 범위가 지정된 대로 추가하는 것입니다. 여러 스레드가 컨텍스트에 액세스할 때 충돌이 발생할 수 있습니다.

또한 비동기 작업과 비동기 람다 표현식은 이 문제를 악화시킬 수 있습니다. DbContext에 Transient를 사용하면 각 클래스에 인스턴스가 부여되어 여러 클래스에 걸쳐 엔터티가 변경되지 않습니다.

이 예외에 대한 자세한 내용은 다음 리소스를 참조하세요. [https://docs.microsoft.com/en-us/ef/core/miscellaneous/warnings/second-Operation-started](https://docs.microsoft.com/en-us/ef/core/miscellaneous/ 경고/2차 작업 시작)

위 내용은 내 Entity Framework 핵심 응용 프로그램에서 '두 번째 작업 시작됨' 오류가 발생하는 이유는 무엇이며 어떻게 해결할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.