Entity Framework Core: "이전 작업이 완료되기 전에 이 컨텍스트에서 두 번째 작업이 시작되었습니다."
오류 메시지 "두 번째 작업 Entity Framework Core의 "이전 작업이 완료되기 전에 이 컨텍스트에서 시작되었습니다."는 일반적으로 여러 스레드가 동일한 DbContext 인스턴스에 동시에 액세스하려고 시도하고 있음을 나타냅니다. 이는 DbContext가 각 요청에 대해 새 인스턴스를 생성하는 범위가 지정된 서비스로 등록될 때 발생할 수 있습니다.
DbContext 등록 범위
기본적으로 Entity Framework Core DbContext를 범위가 지정된 서비스로 등록합니다. 이는 각 HTTP 요청 또는 범위가 지정된 서비스에 대해 DbContext의 새 인스턴스가 생성됨을 의미합니다. 다중 스레드 환경에서는 이로 인해 해당 오류 메시지가 발생할 수 있습니다.
임시 DbContext 등록
이 문제를 해결하려면 DbContext를 다음으로 등록하는 것이 좋습니다. 임시 서비스. 이렇게 하면 각 개별 요청 처리기에 대해 새 인스턴스가 생성됩니다.
services.AddTransient<MyContext>();
또는 ServiceLifetime.Transient를 사용할 수 있습니다.
services.AddDbContext<MyContext>(ServiceLifetime.Transient);
임시 등록의 단점
DbContext를 임시로 등록하는 데에는 단점이 있습니다. 컨텍스트에 의해 관리되는 엔터티는 동일한 DbContext 인스턴스를 사용하는 여러 메서드 호출이나 클래스에서 지속될 수 없습니다.
기타 잠재적 원인
임시 DbContext 등록 외에도 다른 오류의 잠재적 원인은 다음과 같습니다.
추가 정보
DbContext 수명에 대한 자세한 내용 및 스레드 안전성에 대해서는 Entity Framework Core 설명서를 참조하세요.
위 내용은 Entity Framework Core에서 '이전 작업이 완료되기 전에 이 컨텍스트에서 두 번째 작업이 시작되었습니다'를 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!