📚 EF Core DbContext
자주 사용하는 메서드 정리
🏷️ 엔티티 조회 및 추적
Set<T>()
: 지정한 엔티티 타입(T
)에 대한 DbSet을 반환한다.
예:context.Set<User>()
FindAsync()
: 기본 키 값으로 엔티티를 조회한다. (1차 캐시 우선)
예:context.Users.FindAsync(1)
FirstOrDefaultAsync()
/SingleOrDefaultAsync()
: 조건에 맞는 첫 번째(또는 단일) 엔티티를 비동기적으로 가져온다.
예:context.Users.FirstOrDefaultAsync(u => u.Name == "John")
ToListAsync()
: IQueryable 결과를 비동기적으로 리스트로 변환한다.
예:context.Users.Where(u => u.IsActive).ToListAsync()
🏷️ 엔티티 추가, 수정, 삭제
Add()
/AddRange()
: 새로운 엔티티(들)를 추가 상태로 등록한다.
예:context.Users.Add(new User {...})
Update()
/UpdateRange()
: 엔티티(들)를 수정 상태로 등록한다.
예:context.Users.Update(user)
Remove()
/RemoveRange()
: 엔티티(들)를 삭제 상태로 등록한다.
예:context.Users.Remove(user)
🏷️ 변경 사항 저장
SaveChanges()
/SaveChangesAsync()
: 변경된 엔티티들을 데이터베이스에 반영한다.
예:await context.SaveChangesAsync()
🏷️ 트래킹 제어
Entry()
: 특정 엔티티의 상태 및 속성에 접근한다.
예:context.Entry(user).State = EntityState.Modified
ChangeTracker
: 현재 DbContext의 변경 추적 상태를 확인하고 제어한다.
예:context.ChangeTracker.Entries()
🏷️ 명시적 로딩
Entry().Collection().Load()
/Entry().Reference().Load()
: Lazy Loading 없이 특정 컬렉션 또는 참조를 명시적으로 로드한다.
예:context.Entry(user).Collection(u => u.Orders).Load()
🏷️ 기타 유용한 메서드
Database.EnsureCreated()
: 데이터베이스를 존재하지 않으면 생성한다.
예:context.Database.EnsureCreated()
Database.Migrate()
: 최신 마이그레이션을 적용한다.
예:context.Database.Migrate()
Database.BeginTransaction()
: 트랜잭션을 시작한다.
예:using var tx = context.Database.BeginTransaction();
✅ 요약
DbContext
는 EF Core의 DB 작업을 관리하는 중심 객체.- 조회, 추가/수정/삭제, 변경 추적, 명시적 로딩 등 다양한 기능을 제공한다.
- 트랜잭션 및 데이터베이스 관리 기능도 포함되어 있어 관리가 편리하다.
'C# & .NetCore' 카테고리의 다른 글
C# async / await (1) | 2025.08.08 |
---|---|
[.Net Core] EF Core LINQ 확장 메서드 정리 (0) | 2025.06.01 |
[.Net Core] EF Core 엔티티 Configure 에서 자주 사용되는 메서드 정리 (0) | 2025.06.01 |
댓글