수색…


Database.BeginTransaction ()

단일 트랜잭션에 대해 여러 작업을 실행할 수 있으므로 작업 중 하나라도 실패하면 변경 내용을 롤백 할 수 있습니다.

using (var context = new PlanetContext())
{
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            //Lets assume this works
            var jupiter = new Planet { Name = "Jupiter" };
            context.Planets.Add(jupiter);
            context.SaveChanges();

            //And then this will throw an exception
            var neptune = new Planet { Name = "Neptune" };
            context.Planets.Add(neptune);
            context.SaveChanges();

            //Without this line, no changes will get applied to the database
            transaction.Commit();
        }
        catch (Exception ex)
        {
            //There is no need to call transaction.Rollback() here as the transaction object
            //will go out of scope and disposing will roll back automatically
        }
    }
}

transaction.Rollback() 명시 적으로 호출하는 것은 개발자의 관례 일 수 있습니다. 코드를보다 명확하게 설명하기 때문입니다. 또한 명시 적 transaction.Rollback() 필요로하는 Dipsose 올바르게 구현하지 않는 Entity Framework의 쿼리 공급자 (덜 알려짐)가있을 있습니다 Dipsose transaction.Rollback() 호출.



Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow