지난 포스팅에서 Entity Framework의 주요 구성 요소를 알아보았다면,
이번 글에서는 Code-First 방식으로 프로젝트를 설정하고 Entity Framework를 설치하는 과정을 설명하겠습니다.
1. Code-First란?
Code-First는 코드로 데이터베이스를 설계하고 관리하는 방식으로,
기존 데이터베이스 없이도 애플리케이션 코드를 기반으로 데이터베이스를 생성할 수 있습니다.
이 방식은 다음과 같은 특징을 가집니다.
코드 우선: 데이터베이스보다 애플리케이션 코드를 먼저 작성.
객체 지향적 설계: 클래스와 속성으로 테이블과 열을 정의.
자동 마이그레이션: 데이터베이스 구조 변경을 코드로 관리.
이 방식은 특히 데이터 중심의 애플리케이션 개발에서 생산성과 유지보수성을 크게 향상시킵니다.
2. 프로젝트 생성
Entity Framwork를 사용하기 위해서는 Visual Studio를 사용해야합니다.
만약 설치가 되어있지 않으신분들은 아래의 공식링크를 통해 설치를 해주시길 바랍니다.
저는 Visual Studio 2022를 사용했습니다.
2.1 새 프로젝트 생성
이미 설치가 완료되신 분들은 Visual Studio를 실행해 새 프로젝트를 생성해주시면 되겠습니다.
순서는 아래와 같습니다.
1. Visual Studio를 실행하고 새 프로젝트 만들기를 클릭합니다.
2. 콘솔 앱(Console App) 템플릿을 선택하고 EFCoreDemo라는 이름으로 프로젝트를 생성합니다.
3. 프레임워크는 .NET 8.0을 선택합니다.



2.2 기본 화면 확인
프로젝트를 생성하면 Program.cs 파일이 자동으로 열립니다. 이 상태에서 다음 단계를 진행합니다.

3. Entity Framework 설치
이제 새 프로젝트 준비는 끝났으니 EF를 설치해보도록 하겠습니다.
Entity Framework를 설치하려면 NuGet 패키지 관리자 또는 CLI 명령어를 사용할 수 있습니다.
아래는 두 가지 설치 방법입니다.
3.1 NuGet으로 설치
1. 프로젝트 이름을 우클릭하고 NuGet 패키지 관리를 선택합니다.
2. Browse 탭에서 아래 패키지를 검색하고 설치합니다.
Microsoft.EntityFrameworkCore
Microsoft.EntityFrameworkCore.SqlServer
Microsoft.EntityFrameworkCore.Tools
3. 각 패키지를 설치할 때 나오는 라이선스 동의 메시지에 "동의"를 선택합니다.





3.2 CLI(Command Line Interface)로 설치
Visual Studio에서 패키지 관리자 콘솔을 열거나, 터미널에서 아래 명령을 실행합니다.
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools


3.3 패키지 설치 확인

4. Code-First 방식 적용
이제 Entity를 정의하고, 데이터베이스와의 상호작용을 관리할 DbContext를 작성하겠습니다.
4.1 Model 폴더 생성
프로젝트에 Model 폴더를 만들고, Product라는 클래스를 작성합니다.




namespace EFCoreDemo.Model;
public class Product
{
public int Id { get; set; } // Primary key
public string Name { get; set; } = string.Empty;
public int Price { get; set; }
}
4.2 DbContext 클래스 작성
프로젝트 루트에 EFCoreDemoDbContext 클래스를 생성합니다.
namespace EFCoreDemo;
using EFCoreDemo.Model;
using Microsoft.EntityFrameworkCore;
public class EFCoreDemoDbContext : DbContext
{
public DbSet<Product> Products { get; set; } = default!
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=(localdb)\\mssqllocaldb;Database=EFCoreDemoDb;Trusted_Connection=True;");
}
}
Tip: 더 빠르게 네임스페이스 불러오기
저는 보통 DbSet<Product> 부분에서 Ctrl+Space를 눌러 필요한 클래스를 빠르게 가져옵니다.
이렇게 하면 using EFCoreDemo.Model;이 자동으로 추가되어, 매번 수동으로 작성할 필요가 없습니다.
DbContext도 마찬가지입니다.
public class EFCoreDemoDbContext : DbContext
위처럼 작성하다가 DbContext를 입력한 뒤 Ctrl+Space를 누르면,
using Microsoft.EntityFrameworkCore;가 자동으로 추가됩니다.
5. 데이터베이스 생성 및 마이그레이션
마이그레이션(Migration)은 데이터베이스의 스키마(구조)를 코드로 관리하고 변경 사항을 기록하는 과정입니다.
이를 통해 데이터베이스의 상태를 코드와 동기화하고, 스키마 변경을 추적할 수 있습니다.
마이그레이션의 주요 역할은 아래와 같습니다.
초기 데이터베이스 생성: 애플리케이션의 모델을 기반으로 테이블 생성.
스키마 변경 관리: 새로운 열 추가, 테이블 삭제 등의 변경 사항 추적.
데이터베이스 동기화: 모델 코드와 데이터베이스 구조를 일치시킴.
5.1 마이그레이션 생성
아래 명령어를 사용하여 초기 마이그레이션을 생성합니다
dotnet ef migrations add InitialCreate

명령 실행 후 프로젝트의 Migrations 폴더에 두 개의 파일이 생성됩니다.
생성된날짜_InitialCreate.cs (마이그레이션 파일)
EFCoreDemoDbContextModelSnapshot.cs (스냅샷 파일)

5.2 생성된 파일의 역할
1. 마이그레이션 파일
데이터베이스에서 수행해야 할 작업(테이블 생성, 열 추가 등)이 정의되어 있습니다.
예를 들어 Products 테이블을 생성하는 코드가 포함됩니다.

위 코드는 다음을 의미합니다.
Products라는 이름의 테이블을 생성.
Id, Name, Price 열을 추가.
Id를 Primary Key로 설정.
Up은 마이그레이션을 적용할 때 실행되는 코드이며,
Down은 마이그레이션을 되돌릴 때 실행되는 코드입니다.
2. 스냅샷 파일
데이터베이스의 현재 상태를 캡처하여 기록합니다.
데이터베이스의 스키마가 변경될 때마다 스냅샷이 업데이트됩니다.
이는 마이그레이션 간의 변경 내용을 비교하는 데 사용됩니다.
5.3 데이터베이스 업데이트
이제 생성된 마이그레이션을 데이터베이스에 적용하려면 아래 명령을 실행합니다.
dotnet ef database update
명령이 성공적으로 실행되면 다음 작업이 이루어집니다.
데이터베이스(EFCoreDemoDb)가 생성.
Products 테이블이 추가.
테이블 구조가 모델 클래스(Product)와 일치.

6. 마치며
이번 글에서는 Code-First 방식으로 프로젝트를 설정하고, Entity Framework를 설치하는 과정을 살펴보았습니다.
다음 포스팅에서는 LINQ를 사용하여 데이터베이스에서 데이터를 조회하는 방법을 예제와 함께 알아보겠습니다.
'Entity Framework' 카테고리의 다른 글
Entity Framework를 활용한 CRUD 작업 (0) | 2025.01.15 |
---|---|
LINQ로 간편하게 데이터 조회하기 (0) | 2025.01.15 |
Entity Framework의 구성 요소 (0) | 2025.01.12 |
ORM의 동작 방식과 Entity Framework 간단 소개 (0) | 2025.01.10 |
ORM이란 무엇인가? (0) | 2025.01.09 |