728x90
반응형
SaveChanges 함수를 호출할 때마다, transaction이 실행된다.
transaction은 아래와 같은 특성이 있다.
- atomic : transaction 안에 모든 operations이 모두 commit 되거나, 되지 않는다.
- consistent : transaction 전후, database 상태는 일관된다. 예를들어 계좌이체를 할 때, 한 계좌에서 100달러를 인출했으면 한 계좌에 100달러를 입금되어 있어야 한다.
- isolated : transaction 동안, 수정은 다른 프로세스로부터 숨겨져있어야 한다. 여러 isolation level이 있다. 강력한 level일 수록, 데이터 무결성에 좋다. 하지만, lock이 많을수록, 다른 프로세스에 부정적인 영향을 준다.
- durable : transaction 도중 실패가 발생한 경우, 복구가 가능하다.
반응형
explicit transaction 정의
database context의 Database property를 사용해서 transaction을 제어할 수 있다.
using Microsoft.EntityFrameworkCore.Storage;
using (var transaction = db.Database.BeginTransaction())
{
try
{
var products = db.Products
.Where(p => p.ProductName.StartWith(name));
db.Products.RemoveRange(products);
db.SaveChanges();
transaction.Commit();
}
catch (Exception ex)
{
transaction.Rollback();
}
}
728x90
반응형
'Entity Framework Core' 카테고리의 다른 글
Entity Framework Core] Migrations 반영 (0) | 2023.07.20 |
---|---|
Entity Framework Core] Migrations 관리 (0) | 2023.07.20 |
Entity Framework Core] Loading pattern (0) | 2023.07.14 |
Entity Framework Core] .AsNoTracking()이란? (0) | 2023.06.09 |
ASP.NET Core] Entity Framework Core - Migrations (0) | 2023.05.24 |
댓글