モデルの作成と構成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; }

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

    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. データ注釈は規則をオーバーライドしますが、Fluent 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; }
    }

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