c#

C# Entity Framework(Core)와 데이터베이스 연동

개발에대해 2025. 9. 18. 19:06
반응형

 

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/서버 블로킹 방지
  • 대규모 데이터 처리 시 IncludeThenInclude로 관계형 데이터 효율적으로 로드
  • SQLite는 가볍고 로컬 저장용, SQL Server는 서버 기반 프로젝트에 적합
  • 마이그레이션(Migrations)을 사용해 DB 구조 변경 자동 관리
  • LINQ 쿼리 최적화: 불필요한 데이터 조회 방지, 필요한 컬럼만 선택
 

마무리

C#에서 Entity Framework(Core)를 활용하면 데이터베이스 연동과 CRUD 작업을 손쉽게 처리할 수 있습니다.

Code First와 Database First 방식을 프로젝트 상황에 맞게 선택하고, LINQ와 비동기 메서드를 활용하면 효율적인 데이터 처리 구조를 만들 수 있습니다. SQL Server, SQLite 연동 예제와 마이그레이션 관리까지 익히면 실무 프로젝트에서 데이터베이스 관련 작업 생산성을 크게 높일 수 있습니다.

반응형