Entity Framework Core (EF Core)는 마이크로소프트에서 개발한 객체 관계형 매핑(Object-Relational Mapping, ORM) 프레임워크입니다. EF Core는 .NET 애플리케이션에서 관계형 데이터베이스와 상호 작용하기 위한 강력한 도구를 제공합니다. 이 프레임워크를 사용하면 개발자가 데이터베이스와 직접 SQL 쿼리를 작성하지 않고도 데이터베이스 작업을 수행할 수 있습니다.
주요 특징
- 크로스 플랫폼: EF Core는 Windows, macOS, 그리고 Linux에서 실행되는 .NET Core 애플리케이션과 호환됩니다.
- 다양한 데이터베이스 지원: EF Core는 여러 데이터베이스 시스템을 지원합니다. 예를 들어, Microsoft SQL Server, SQLite, PostgreSQL, MySQL 등을 포함합니다.
- 강력한 모델링: 개발자는 데이터베이스 구조를 반영하는 도메인 모델을 정의할 수 있습니다. 이를 통해 코드 내에서 객체와 데이터베이스 테이블 간의 매핑을 설정합니다.
- LINQ 지원: EF Core는 LINQ(Language Integrated Query)를 지원하여, 데이터베이스 쿼리를 C# 코드 내에서 직관적으로 작성할 수 있게 합니다.
- 마이그레이션: 데이터베이스 스키마를 코드 기반으로 정의하고, 이를 통해 데이터베이스 스키마를 생성, 업데이트할 수 있는 마이그레이션 기능을 제공합니다. 이 기능을 통해 버전 관리 및 스키마 변경이 용이해집니다.
- 비동기 프로그래밍: 비동기 메서드를 제공하여 데이터베이스 작업이 애플리케이션의 다른 작업을 블로킹하지 않도록 합니다.
주요 구성 요소
- DbContext: 데이터베이스와 상호작용하는 주된 클래스입니다. DbContext를 통해 데이터베이스 연결, 모델 구성, 쿼리 작성 등을 수행합니다.
- DbSet<TEntity>: 특정 엔터티 타입에 대한 CRUD 작업을 수행할 수 있는 집합입니다.
- 마이그레이션 도구: 데이터베이스 스키마를 관리하고 버전 관리를 쉽게 할 수 있도록 지원합니다.
예제 코드
아래는 간단한 EF Core 사용 예제입니다.
using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
public DbSet<Post> Posts { get; set; }
string DBAdress = @"DB 연결 문자열"
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(DBAdress);
}
}
public class Blog
{
public int BlogId { get; set; }
[Required]
public string Url { get; set; }
public List<Post> Posts { get; set; }
}
public class Post
{
public int PostId { get; set; }
[Required]
public string Title { get; set; }
public string Content { get; set; }
public int BlogId { get; set; }
public Blog Blog { get; set; }
}
// 사용 예제
using (var db = new BloggingContext())
{
// 새로운 블로그 추가
var blog = new Blog { Url = "http://sample.com" };
db.Blogs.Add(blog);
db.SaveChanges();
// 블로그 가져오기
var blogs = db.Blogs.ToList();
}
위 예제에서는 Blog와 Post 엔터티를 정의하고, BloggingContext에서 DbSet<Blog> 및 DbSet<Post>를 통해 데이터베이스와 상호작용합니다.
OnConfiguring 메서드에서 SQL Server 데이터베이스 연결을 설정하고, 이후 SaveChanges 메서드를 통해 변경 사항을 데이터베이스에 적용합니다.
EF Core는 강력하고 유연한 ORM으로서 .NET 개발자가 데이터베이스 작업을 보다 생산적이고 효율적으로 수행할 수 있게 해줍니다.
'공부 > C#' 카테고리의 다른 글
EFCore에서 State(상태)에 대해서 (0) | 2024.07.16 |
---|---|
DTO(Data Transfer Object)란? (0) | 2024.07.16 |
람다 표현식 이란? (0) | 2024.07.14 |
Ation, func란? (1) | 2024.07.14 |
protobuf(Protocol Buffers)에 대해 (0) | 2024.07.08 |