EF Core 시작Getting Started with EF Core

이 자습서에서는 Entity Framework Core를 사용하여 SQLite 데이터베이스에 대한 데이터 액세스를 수행하는 .NET Core 콘솔 앱을 만듭니다.In this tutorial, you create a .NET Core console app that performs data access against a SQLite database using Entity Framework Core.

Windows에서 Visual Studio를 사용하거나 Windows, macOS 또는 Linux에서 .NET Core CLI를 사용하여 자습서를 진행할 수 있습니다.You can follow the tutorial by using Visual Studio on Windows, or by using the .NET Core CLI on Windows, macOS, or Linux.

GitHub에서 이 아티클의 샘플을 봅니다.View this article's sample on GitHub.

전제 조건Prerequisites

다음 소프트웨어를 설치합니다.Install the following software:

새 프로젝트 만들기Create a new project

dotnet new console -o EFGetStarted
cd EFGetStarted

Entity Framework Core 설치Install Entity Framework Core

EF Core를 설치하려면 대상으로 지정할 EF Core 데이터베이스 공급자에 대한 패키지를 설치합니다.To install EF Core, you install the package for the EF Core database provider(s) you want to target. 이 자습서에서는 .NET Core가 지원하는 모든 플랫폼에서 실행되는 SQLite를 사용합니다.This tutorial uses SQLite because it runs on all platforms that .NET Core supports. 사용 가능한 공급자 목록은 데이터베이스 공급자를 참조하세요.For a list of available providers, see Database Providers.

dotnet add package Microsoft.EntityFrameworkCore.Sqlite

모델 만들기Create the model

모델을 구성하는 컨텍스트 클래스 및 엔터티 클래스를 정의합니다.Define a context class and entity classes that make up the model.

  • 프로젝트 디렉터리에서 다음 코드를 사용하여 Model.cs를 만듭니다.In the project directory create Model.cs with the following code
using System.Collections.Generic;
using Microsoft.EntityFrameworkCore;

namespace EFGetStarted
{
    public class BloggingContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
        public DbSet<Post> Posts { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder options)
            => options.UseSqlite("Data Source=blogging.db");
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }

        public List<Post> Posts { get; } = new List<Post>();
    }

    public class Post
    {
        public int PostId { get; set; }
        public string Title { get; set; }
        public string Content { get; set; }

        public int BlogId { get; set; }
        public Blog Blog { get; set; }
    }
}

EF Core는 모델을 기존 데이터베이스에서 리버스 엔지니어링할 수도 있습니다.EF Core can also reverse engineer a model from an existing database.

팁: 실제 앱에서는 각 클래스를 별도의 파일에 저장하고 구성 파일 또는 환경 변수에 연결 문자열을 저장합니다.Tip: In a real app, you put each class in a separate file and put the connection string in a configuration file or environment variable. 자습서를 간단히 유지하기 위해 모든 항목이 하나의 파일에 포함되어 있습니다.To keep the tutorial simple, everything is contained in one file.

데이터베이스 만들기Create the database

다음 단계에서는 마이그레이션을 사용하여 데이터베이스를 만듭니다.The following steps use migrations to create a database.

  • 다음 명령을 실행합니다.Run the following commands:

    dotnet tool install --global dotnet-ef
    dotnet add package Microsoft.EntityFrameworkCore.Design
    dotnet ef migrations add InitialCreate
    dotnet ef database update
    

    그러면 dotnet ef와 프로젝트에서 명령을 실행하는 데 필요한 디자인 패키지가 설치됩니다.This installs dotnet ef and the design package which is required to run the command on a project. migrations 명령은 마이그레이션을 스캐폴딩하여 모델에 대한 초기 테이블 집합을 만듭니다.The migrations command scaffolds a migration to create the initial set of tables for the model. database update 명령은 데이터베이스를 만들고 새 마이그레이션을 적용합니다.The database update command creates the database and applies the new migration to it.

만들기, 읽기, 업데이트 및 삭제Create, read, update & delete

  • Program.cs를 열고 내용을 다음 코드로 바꿉니다.Open Program.cs and replace the contents with the following code:

    using System;
    using System.Linq;
    
    namespace EFGetStarted
    {
        class Program
        {
            static void Main()
            {
                using (var db = new BloggingContext())
                {
                    // Create
                    Console.WriteLine("Inserting a new blog");
                    db.Add(new Blog { Url = "http://blogs.msdn.com/adonet" });
                    db.SaveChanges();
    
                    // Read
                    Console.WriteLine("Querying for a blog");
                    var blog = db.Blogs
                        .OrderBy(b => b.BlogId)
                        .First();
    
                    // Update
                    Console.WriteLine("Updating the blog and adding a post");
                    blog.Url = "https://devblogs.microsoft.com/dotnet";
                    blog.Posts.Add(
                        new Post
                        {
                            Title = "Hello World",
                            Content = "I wrote an app using EF Core!"
                        });
                    db.SaveChanges();
    
                    // Delete
                    Console.WriteLine("Delete the blog");
                    db.Remove(blog);
                    db.SaveChanges();
                }
            }
        }
    }
    

앱 실행Run the app

dotnet run

다음 단계Next steps