문제

우리는 다음과 같이 SQL을 사용할 수 있습니다.

SELECT * FROM student WITH(NOLOCK);

사용하지 않고 LINQ에서 SQL로 어떻게이를 달성 할 수 있습니까? TransactionScope?

도움이 되었습니까?

해결책

LINQ에서 SQL에는이를 수행하는 메커니즘이 없지만 특정 격리 수준으로 트랜잭션을 만들 수 있습니다. 아래 코드를보십시오.

using (var con = new SqlConnection("constr"))
{
    con.Open();

    using (var transaction = con.BeginTransaction(
        IsolationLevel.ReadUncommitted))
    {
        using (var context = new SchoolDataContext(con))
        {
            // HACK: Setting the context.Transaction is 
            // needed in .NET 3.5 (fixed in .NET 4.0).
            context.Transaction = transaction;
            var q = from s in context.Students select c;
        }
    }
}

때로는 이러한 유형의 격리를 사용하는 것이 유용합니다. 즉, 성능 이유는 유용합니다. 그러나이 유형의 데이터베이스 격리를 사용하여 CUD (Cread, Update) 작업을 수행하지 않도록하십시오. 물론 상황에 따라 다르지만 데이터가 일관되지 않은 상태로 나타날 수 있습니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top