많은 사용자가 특정 시점에 사용하는 웹 응용 프로그램이 있습니다. DB 관점에서 볼 때, 그들은 시스템을 통해 이동할 때 테이블의 수에 상관없이 지속적으로 데이터를 쓰고 읽습니다. 또한이 시스템에 데이터를 가져 오는 많은 프로세스가 있습니다.TransactionScope가 실수로 데이터베이스의 일부를 잠급니다.
오늘 가져 오기 프로세스를 디버깅하는 동안 트랜잭션 도중에 코드가 예외로 중지되었습니다. 거의 즉시 나는 시스템의 사용자가 실패한 쿼리에 대한 보고서를 받기 시작했습니다. 아무 래도 나는 내 행동을 그것과 연결시키고, 계속을 누르면, 갑자기 질문이 다시 일하기 시작했다. 간단히 말해서, 나는 나의 거래를 설정하는 방법이 이것에 대한 책임이 있다고 생각하지만, 그 영향을 충분히 회피 할 수있는 영향을 이해하지 못한다.
나는 트랜잭션이 필요하므로 잘못된 것이 있으면 롤백 할 수 있지만 범위가 활성 또는 "정지"인 동안 데이터베이스를 잠그는 것처럼 보입니다. 내가보고있는 문제를 방지하기 위해 이것을 바꿀 수있는 방법이 있습니까? 주어진 범위 내에서 스레드 실행 여부를 중요하지 않습니다 여부
는 범위가 활성화되어있는 동안이나 데이터베이스를 잠금 것으로 보인다using (TransactionScope scope = new TransactionScope(
TransactionScopeOption.Required,
System.TimeSpan.MaxValue))
{
using (var context = new EntityContext())
{
//lots of write operations in here
}
}