아래 그림과 같이 격리 수준을 읽기 미확인으로 설정합니다. 연결이 내가 디자인 (The transaction isolation level is not reset when you reuse a connection from the connection pool)에 의해 이해는 다시 기본 격리 수준으로 다시 설정되지 않습니다 풀에 반환되면트랜잭션 스코프를 사용할 때 격리 수준 재설정
TransactionOptions to = new TransactionOptions();
to.IsolationLevel = System.Transactions.IsolationLevel.ReadUncommitted;
using (TransactionScope transaction = new TransactionScope(TransactionScopeOption.RequiresNew, to))
{
// Do Stuff
transaction.Complete();
}
문제는있다. 따라서 트랜잭션이 완료되면 풀에서 해당 연결을 다시 사용하는 모든 항목이 읽기 커밋되지 않은 격리 수준으로 실행됩니다.
"SET TRANSACTION ISOLATION LEVEL READ COMMITTED"
SqlCommand를 사용하여 전화를 걸었지만 풀에서 동일한 연결을 다시 사용할 수 있음을 보장 할 방법이 없습니다. // Do Stuff
의 아무 것도 기본 연결을 노출하지 않습니다.
이 코드가 이전에 실행 된 경우에 대비하여 DB에 대한 모든 호출에 명시 적으로 설정하지 않고 격리 수준을 재설정하는 방법이 있습니까?
이것은 우리가 사용하는 접근 방법입니다. 추가하는 공백으로 "단순한"것으로 연결 문자열을 '다르게'만들고 따라서 다른 풀에 빠지게됩니다. 코드는 앰비언트 범위 분리를 검사하여 사용할 CS를 결정합니다. 어떤 수단으로도 완벽한 것은 아니지만, 아무 것도 아닌 것보다 낫습니다. – user2864740