📚 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.ModifiedChangeTracker: 현재 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' 카테고리의 다른 글
| XUnit을 이용한 테스트 (0) | 2025.11.03 |
|---|---|
| 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 |
댓글