EF Core(Entity Framework Core)는 개발자가 .NET 개체를 사용하여 데이터베이스와 상호 작용할 수 있도록 하는 ORM(개체 관계형 매핑) 프레임워크입니다. EF Core의 필수 기능 중 하나는 데이터베이스 마이그레이션을 처리하는 기능입니다.
이 문서에서는 EF Core 마이그레이션이 중요한 이유와 이를 사용하는 방법을 예제와 함께 설명합니다. 따라서 시작하려면 다음을 수행하십시오.
C#은 꽤 오랫동안 사용되어 왔으며 계속해서 개발되어 더욱 향상된 기능을 제공하고 있습니다. Medium.com
EF Core 마이그레이션은 시간 경과에 따른 데이터베이스 스키마 변경 사항을 관리하는 방법입니다. 데이터베이스 모델을 변경하는 경우(예: 테이블이나 열 추가 또는 제거) 해당 변경 사항을 설명하는 마이그레이션을 생성할 수 있습니다.
그런 다음 마이그레이션을 사용하여 새 모델과 일치하도록 데이터베이스 스키마를 업데이트합니다.
EF Core 마이그레이션은 데이터를 보존하면서 시간이 지남에 따라 데이터베이스 스키마를 발전시킬 수 있기 때문에 필수적입니다.
마이그레이션이 없으면 모델을 변경할 때마다 데이터베이스 스키마를 수동으로 수정해야 하므로 시간이 많이 걸리고 오류가 발생하기 쉽습니다.
마이그레이션은 또한 변경 사항을 쉽게 추적하고 필요한 경우 이전 버전으로 롤백할 수 있도록 데이터베이스 스키마 버전을 지정하는 방법을 제공합니다.
EF Core 마이그레이션을 사용하려면 다음 몇 가지 단계를 수행해야 합니다.
새 EF Core 프로젝트를 만듭니다. 첫 번째 단계는 Visual Studio에서 새 EF Core 프로젝트를 만드는 것입니다. "새 프로젝트 만들기"를 선택한 다음 "ASP.NET Core 웹 애플리케이션"을 선택하고 "웹 애플리케이션(모델-뷰-컨트롤러)" 템플릿을 선택하면 됩니다.
데이터베이스 컨텍스트를 만듭니다. 다음 단계는 데이터베이스 컨텍스트 클래스를 만드는 것입니다. 이 클래스는 .NET 개체와 데이터베이스 간의 상호 작용을 관리합니다. 데이터베이스 컨텍스트를 만들려면 프로젝트에서 새 클래스를 만들고 DbContext 클래스에서 상속합니다.
public class MyDbContext : DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } }
데이터베이스 모델 생성
데이터베이스 컨텍스트를 생성한 후에는 데이터베이스 모델을 생성해야 합니다. 이 모델은 데이터베이스의 구조를 나타내며 EF Core에서 데이터베이스 테이블과 열을 생성하는 데 사용됩니다.
데이터베이스 모델을 생성하려면 프로젝트에서 새 클래스를 생성하고 해당 속성을 데이터베이스 필드로 정의합니다.
public class MyModel { public int Id { get; set; } public string Name { get; set; } public int Age { get; set; } }
EF Core 마이그레이션 활성화
다음으로, 프로젝트에서 EF Core 마이그레이션을 활성화해야 합니다. 이렇게 하려면 패키지 관리자 콘솔을 열고 다음 명령을 입력합니다.
PM> Install-Package Microsoft.EntityFrameworkCore.Tools
이 패키지에는 EF Core 마이그레이션을 생성하고 관리하는 데 필요한 도구가 포함되어 있습니다.
마이그레이션 생성
EF Core 마이그레이션을 활성화하면 첫 번째 마이그레이션을 생성할 수 있습니다. 마이그레이션을 생성하려면 패키지 관리자 콘솔을 열고 다음 명령을 입력합니다.
PM> Add-Migration InitialCreate
그러면 데이터베이스 모델에 대한 변경 사항을 설명하는 "InitialCreate"라는 새 마이그레이션이 생성됩니다. 프로젝트의 "Migrations" 폴더에서 마이그레이션 내용을 볼 수 있습니다.
데이터베이스 업데이트
마이그레이션을 생성한 후 새 모델과 일치하도록 데이터베이스 스키마를 업데이트할 수 있습니다. 이렇게 하려면 패키지 관리자 콘솔을 열고 다음 명령을 입력합니다.
PM> Update-Database
그러면 데이터베이스에 마이그레이션이 적용되고 해당 스키마가 업데이트됩니다.
EF Core 마이그레이션을 사용하는 예를 살펴보겠습니다. "Id"와 "Name"이라는 두 개의 열이 있는 간단한 "Students" 테이블을 생성한다고 가정합니다. Visual Studio에서 새 ASP.NET Core 웹 애플리케이션 프로젝트를 만드는 것부터 시작하겠습니다.
새 EF Core 프로젝트를 만듭니다. Visual Studio에서 새 ASP.NET Core 웹 애플리케이션 프로젝트를 만듭니다. "웹 애플리케이션(모델-뷰-컨트롤러)" 템플릿을 선택하고 인증을 위해 "개별 사용자 계정"을 선택합니다. 프로젝트 이름을 "EFCoreMigrationsExample"로 지정합니다.
데이터베이스 컨텍스트를 만듭니다. 프로젝트의 "Models" 폴더에 "MyDbContext"라는 새 클래스를 만들고 DbContext 클래스에서 상속합니다.
using Microsoft.EntityFrameworkCore; namespace EFCoreMigrationsExample.Models { public class MyDbContext : DbContext { public MyDbContext(DbContextOptions<MyDbContext> options) : base(options) { } public DbSet<Student> Students { get; set; } } }
"Students" 속성은 데이터베이스의 "Students" 테이블을 나타내는 DbSet입니다.
데이터베이스 모델 생성
프로젝트의 "Models" 폴더에 새 "Student" 클래스를 생성하고 해당 속성을 정의합니다.
namespace EFCoreMigrationsExample.Models { public class Student { public int Id { get; set; } public string Name { get; set; } } }
EF Core 마이그레이션 활성화
패키지 관리자 콘솔을 열고 다음 명령을 입력하여 EF Core 도구 패키지를 설치합니다.
PM> Install-Package Microsoft.EntityFrameworkCore.Tools
마이그레이션 생성
패키지 관리자 콘솔을 열고 다음 명령을 입력하여 마이그레이션을 만듭니다.
PM> Add-Migration InitialCreate
그러면 데이터베이스 모델에 대한 변경 사항을 설명하는 "InitialCreate"라는 새로운 마이그레이션이 생성됩니다.
마이그레이션 파일은 다음과 같아야 합니다.
using Microsoft.EntityFrameworkCore.Migrations; namespace EFCoreMigrationsExample.Migrations { public partial class InitialCreate : Migration { protected override void Up(MigrationBuilder migrationBuilder) { migrationBuilder.CreateTable( name: "Students", columns: table => new { Id = table.Column<int>(type: "int", nullable: false) .Annotation("SqlServer:Identity", "1, 1"), Name = table.Column<string>(type: "nvarchar(max)", nullable: true) }, constraints: table => { table.PrimaryKey("PK_Students", x => x.Id); }); } protected override void Down(MigrationBuilder migrationBuilder) { migrationBuilder.DropTable( name: "Students"); } } }
마이그레이션을 수행하면 "Id" 및 "Name" 열이 포함된 "Students"라는 새 테이블이 생성됩니다.
데이터베이스 업데이트 패키지 관리자 콘솔을 열고 다음 명령을 입력하여 데이터베이스 스키마를 업데이트합니다.
PM> Update-Database
그러면 데이터베이스에 마이그레이션이 적용되고 해당 스키마가 업데이트됩니다.
이제 EF Core를 사용하여 데이터베이스에서 학생을 추가, 업데이트 및 삭제할 수 있습니다. 예를 들어 다음과 같이 데이터베이스에 새 학생을 추가할 수 있습니다.
using EFCoreMigrationsExample.Models; namespace EFCoreMigrationsExample.Controllers { public class HomeController : Controller { private readonly MyDbContext _context; public HomeController(MyDbContext context) { _context = context; } public IActionResult Index() { var student = new Student { Name = "John" }; _context.Students.Add(student); _context.SaveChanges(); return View(); } } }
이 코드는 Student 클래스의 새 인스턴스를 만들고 해당 Name 속성을 "John"으로 설정합니다. 그런 다음 학생을 Students DbSet에 추가하고 변경 사항을 데이터베이스에 저장합니다.
EF Core 마이그레이션은 애플리케이션에서 데이터베이스 스키마 변경 사항을 관리하는 편리한 방법을 제공합니다.
이 문서에서는 DbContext 만들기, 모델 정의, 마이그레이션 만들기, 데이터베이스 스키마 업데이트를 포함하여 EF Core 마이그레이션을 사용하여 간단한 데이터베이스 스키마를 만드는 방법을 보여줍니다.
이는 EF Core가 수행할 수 있는 작업의 시작일 뿐입니다. EF Core를 사용하여 데이터를 쿼리 및 조작하고, 테이블 간의 복잡한 관계를 만드는 등의 작업을 수행할 수 있습니다. 사용하기 쉽고 다양한 기능을 갖춘 EF Core는 .NET에서 데이터 기반 애플리케이션을 구축하기 위한 탁월한 선택입니다.
이 문서는 EF Core 마이그레이션을 시작하는 데 도움이 되었습니다. 질문이나 의견이 있으시면 아래에 남겨주세요. 즐거운 코딩하세요!
C# 출판물 , 링크드인 , 인스타그램 , 트위터 , Dev.to
여기에도 게시됨