Entity Framework Core
마이크로소프트에서 개발한 .NET용 ORM Framework
Entity Framework Core는 가볍고 확장 가능한 오픈 소스 개발 프레임워크로서 .NET 언어를 사용하고 ORM (Object-Relational Mapping)을 지원하며 Database 상호 작용하는데 간단하고 편리한 방법으로 조작 가능하도록 해주는 데이터베이스 액세스 기술
특징
- 객체-관계 매핑 (ORM): 데이터베이스 테이블과 C# 클래스 간의 매핑 자동 처리
- LINQ (Language Integrated Query) 지원: LINQ를 사용하여 데이터베이스 쿼리 작성 가능
- 데이터 마이그레이션: 데이터베이스 스키마의 변경 사항을 추적하고 적용하는 데이터 마이그레이션을 제공
- 다양한 데이터베이스 지원: 다양한 데이터베이스 시스템 지원, 아래의 표 참조
Database Providers
※ 현재 지원하는 데이터베이스 공급자로 버전에 따라 지원 불가 할 수도 있습니다.
Database Providers | |
Database | Azure SQL, SQL Server 2012 SQLite, EF Core in-memory database Azure Cosmos DB SQL API PostgreSQL, MySQL, MariaDB Oracle, MongoDB, Apache Kafka |
Database Schema 관리
EntityFramework Core는 아래 두가지 방법으로 Model과 Database Schema를 쉽게 매핑해주고 SQL 쿼리 작성없이 생성, 변경, 삭제할 수 있게 해준다.
1. Code First
Model을 정의하여 Migration을 통해 Database Schema 자동으로 생성, 변경, 삭제할 수 있다.
2. Database First
이미 구성된 Database를 "Scaffold" 명령어를 통해 *리버스 엔지니어링하여 Schema 정보를 Model로 변환
※ 리버스 엔지니어링
- (일반적인 의미) 소프트웨어의 한 분야로 이미 만들어진 시스템을 역으로 추적하여 처음의 문서나 설계기법 등의 자료를 얻어내는 일
- (EF Core) 데이터베이스 스키마에 따라 엔티티 형식 클래스 및 DbContext 클래스를 스케폴드하는 프로세스
Migration (Code First)
Migration은 데이터를 보존하여 Database Schema를 EntityFramework Core Model과 동기화된 상태로 유지하는 방법
생성
1. Model 생성
Database의 Table에 해당하는 Model을 생성 해준다.
public class User {
public int id { get; set; }
public String name { get; set; }
}
2. Migration 만들기
NET CLI와 Visual Studio PowerShell / Package Manager Console을 통해 만들 수 있다.
Environment | Command |
.NET CLI | dotnet ef migrations add InitialCreate |
Visual Studio | Add-Migrations InitialCreate |
3. Database 적용
Migration 성공 시 Migrations 폴더와 모델(생성일자_InitialCreate.cs) 생성 → 해당 모델을 Database에 적용
Environment | Command |
.NET CLI | dotnet ef database update |
Visual Studio | Update-Database |
※ 해당 Sample 코드 및 실습 동영상은 링크를 통해 확인 할 수 있습니다.
마치며 (개인적인 생각)
지금까지 Entity Framework Core와 Migration 기능에 대해 정리하였다. 첫 직장에서 사용할 당시 .NET은 Microsoft에서 윈도우 프로그램 개발 환경으로 Java에 비해 Windows에 종속적으로 제공하여 사용하였지만 Version up이 되며 종속적인 부분도 많이 사라지고 Java 진영에서 사용하던 여러 가지 기술들과 라이브러리들이 많이 배포되면서 다양한 분야에서 사용 가능 해 보인다. 해당 기술은 기존에 맡았던 프로젝트를 마치고 새로운 프로젝트를 시작하며 .NET 8.0을 사용하며 Java 진영 ORM 기술인 JPA와 상응하는 기술을 검토하면서 사용 및 작성하게 되었다. Entity Framework Core에서 제공하는 많은 기능을 다 사용해 보진 않았지만 이번 프로젝트를 성공적으로 마치기 위해 조금 더 검토해 보고 사용해 봐야 할 것이다. 사용하면서 유용한 기능은 추가로 포스팅할 예정이다.