C# Entity Framework(Core)와 데이터베이스 연동
C#에서 데이터베이스 연동은 거의 모든 애플리케이션에서 필수입니다.
Entity Framework(Core)는 ORM(Object-Relational Mapping) 라이브러리로, 객체 지향 코드로 DB CRUD를 처리할 수 있어 생산성과 유지보수성을 크게 향상시킵니다.
이번 글에서는 LINQ + DB CRUD, Code First와 Database First, SQL Server와 SQLite 연동 방법에 대해 알아봅니다.
1. Entity Framework(Core) 소개
EF Core는 .NET Core와 .NET 5/6/7에서 사용하는 ORM 라이브러리입니다.
데이터베이스 테이블과 C# 클래스를 매핑하고, SQL을 직접 작성하지 않아도 LINQ를 통해 CRUD 작업이 가능합니다.
2. Code First vs Database First
- Code First: C# 클래스 정의 후 DB 생성 → 개발 초기 단계에 유리
- Database First: 기존 DB 스키마에서 C# 클래스 생성 → 레거시 DB 연동에 유리
Code First 예제
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext {
public DbSet<Product> Products { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) {
optionsBuilder.UseSqlite("Data Source=app.db");
}
}
public class Product {
public int Id { get; set; }
public string Name { get; set; }
public decimal Price { get; set; }
}
// DB 생성
using var context = new AppDbContext();
context.Database.EnsureCreated();
3. LINQ를 활용한 CRUD
LINQ를 활용하면 SQL 작성 없이 데이터 조회, 추가, 수정, 삭제가 가능합니다.
// 데이터 추가
var newProduct = new Product { Name = "Laptop", Price = 1200m };
context.Products.Add(newProduct);
context.SaveChanges();
// 데이터 조회
var product = context.Products.FirstOrDefault(p => p.Name == "Laptop");
Console.WriteLine(product.Price);
// 데이터 수정
product.Price = 1100m;
context.SaveChanges();
// 데이터 삭제
context.Products.Remove(product);
context.SaveChanges();
4. Database First 예제
기존 SQL Server DB가 있는 경우, Scaffold-DbContext 명령어로 C# 클래스를 생성할 수 있습니다.
// 패키지 관리자 콘솔 명령
// Scaffold-DbContext "Server=.;Database=MyDB;Trusted_Connection=True;" Microsoft.EntityFrameworkCore.SqlServer -OutputDir Models
이후 Code First와 동일하게 DbContext를 통해 CRUD 작업 가능하며, LINQ로 데이터 처리도 자유롭습니다.
5. 실무 활용
- EF Core는 비동기 메서드 지원:
ToListAsync()
,SaveChangesAsync()
→ UI/서버 블로킹 방지 - 대규모 데이터 처리 시 Include와 ThenInclude로 관계형 데이터 효율적으로 로드
- SQLite는 가볍고 로컬 저장용, SQL Server는 서버 기반 프로젝트에 적합
- 마이그레이션(Migrations)을 사용해 DB 구조 변경 자동 관리
- LINQ 쿼리 최적화: 불필요한 데이터 조회 방지, 필요한 컬럼만 선택
마무리
C#에서 Entity Framework(Core)를 활용하면 데이터베이스 연동과 CRUD 작업을 손쉽게 처리할 수 있습니다.
Code First와 Database First 방식을 프로젝트 상황에 맞게 선택하고, LINQ와 비동기 메서드를 활용하면 효율적인 데이터 처리 구조를 만들 수 있습니다. SQL Server, SQLite 연동 예제와 마이그레이션 관리까지 익히면 실무 프로젝트에서 데이터베이스 관련 작업 생산성을 크게 높일 수 있습니다.
'c#' 카테고리의 다른 글
C# LINQ 활용법 – 컬렉션 처리와 데이터 쿼리 (0) | 2025.09.21 |
---|---|
C# WPF/WinForms GUI 개발: MVVM, 데이터 바인딩, 커스텀 컨트롤 활용 (0) | 2025.09.18 |
C# 디자인 패턴 – Singleton, Factory, Observer 사용법 (0) | 2025.09.18 |
.NET Task.Run 사용법: 비동기 프로그래밍을 시작하는 가장 쉬운 방법 (0) | 2025.09.11 |
.NET ThreadPool.QueueUserWorkItem: 비동기 작업 (0) | 2025.09.11 |