모델 만들기 및 구성Creating and configuring a model

Entity Framework는 엔터티 클래스의 형태에 따라 규칙 집합을 사용하여 모델을 작성합니다.Entity Framework uses a set of conventions to build a model based on the shape of your entity classes. 규칙에서 발견한 항목을 보충 및/또는 재정의하기 위해 추가적인 구성을 지정할 수 있습니다.You can specify additional configuration to supplement and/or override what was discovered by convention.

이 문서에서는 모든 데이터 저장소를 대상으로 하는 모델에 적용할 수 있는 구성과, 모든 관계형 데이터베이스를 대상으로 할 때 적용할 수 있는 구성을 다룹니다.This article covers configuration that can be applied to a model targeting any data store and that which can be applied when targeting any relational database. 공급자는 특정 데이터 저장소에만 해당하는 구성을 활성화할 수도 있습니다.Providers may also enable configuration that is specific to a particular data store. 공급자 특정 구성에 대한 설명서는  데이터베이스 공급자  섹션을 참조하세요.For documentation on provider specific configuration see the Database Providers section.

GitHub에서 이 문서의  샘플 을 볼 수 있습니다.You can view this article’s sample on GitHub.

Fluent API를 사용하여 모델 구성Use fluent API to configure a model

파생된 컨텍스트에서  OnModelCreating  메서드를 재정의하고  ModelBuilder API를 사용하여 모델을 구성할 수 있습니다.You can override the OnModelCreating method in your derived context and use the ModelBuilder API to configure your model. 이것은 가장 강력한 구성 방법으로, 엔터티 클래스를 수정하지 않고도 구성을 지정할 수 있습니다.This is the most powerful method of configuration and allows configuration to be specified without modifying your entity classes. Fluent API 구성은 우선 순위가 가장 높으며 규칙과 데이터 주석을 재정의합니다.Fluent API configuration has the highest precedence and will override conventions and data annotations.

using Microsoft.EntityFrameworkCore;

namespace EFModeling.FluentAPI.Required
{
    class MyContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }

        protected override void OnModelCreating(ModelBuilder modelBuilder)
        {
            modelBuilder.Entity<Blog>()
                .Property(b => b.Url)
                .IsRequired();
        }
    }

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

데이터 주석을 사용하여 모델 구성Use data annotations to configure a model

특성(데이터 주석이라고 함)을 클래스와 속성에 정의할 수도 있습니다.You can also apply attributes (known as Data Annotations) to your classes and properties. 데이터 주석은 규칙을 재정의하지만 흐름 API 구성이 데이터 주석을 재정의합니다.Data annotations will override conventions, but will be overridden by Fluent API configuration.

using Microsoft.EntityFrameworkCore;
using System.ComponentModel.DataAnnotations;

namespace EFModeling.DataAnnotations.Required
{
    class MyContext : DbContext
    {
        public DbSet<Blog> Blogs { get; set; }
    }

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