Entity Framework CoreEntity Framework Core

Entity Framework (EF) Core は人気の Entity Framework データ アクセス テクノロジの軽量版であり、拡張性に優れ、オープン ソースで、プラットフォームに依存しません。Entity Framework (EF) Core is a lightweight, extensible, open source and cross-platform version of the popular Entity Framework data access technology.

EF Core はオブジェクト リレーショナル マッパー (O/RM) として機能します。これにより、.NET 開発者は .NET オブジェクトを使用してデータベースを操作できます。通常は開発者が記述する必要があるほとんどのデータ アクセス コードが不要になります。EF Core can serve as an object-relational mapper (O/RM), enabling .NET developers to work with a database using .NET objects, and eliminating the need for most of the data-access code they usually need to write.

EF Core は多くのデータベース エンジンに対応しています。詳細については、「Database Providers」(データベース プロバイダー) を参照してください。EF Core supports many database engines, see Database Providers for details.

モデルThe Model

EF Core では、データ アクセスはモデルを利用して実行されます。With EF Core, data access is performed using a model. モデルはエンティティ クラスと、データベースとのセッションを表すコンテキスト オブジェクトから構成されます。これにより、データのクエリと保存が可能になります。A model is made up of entity classes and a context object that represents a session with the database, allowing you to query and save data. 詳細については、「Creating a Model」 (モデルの作成) を参照してください。See Creating a Model to learn more.

既存データベースからモデルを生成したり、自分のデータベースに合わせてモデルのコードを直接記述したり、EF 移行を使ってモデルからデータベースを作成してから、モデルが時間の経過と共に変化するのに合わせてそれを進化させたりできます。You can generate a model from an existing database, hand code a model to match your database, or use EF Migrations to create a database from your model, and then evolve it as your model changes over time.

using Microsoft.EntityFrameworkCore;
using System.Collections.Generic;

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

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlServer(
                @"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
        }
    }

    public class Blog
    {
        public int BlogId { get; set; }
        public string Url { get; set; }
        public int Rating { get; set; }
        public List<Post> Posts { get; set; }
    }

    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; }
    }
}

クエリ実行Querying

エンティティ クラスのインスタンスは、統合言語クエリ (LINQ) を利用し、データベースから取得されます。Instances of your entity classes are retrieved from the database using Language Integrated Query (LINQ). 詳細については、「Querying Data」 (データのクエリ) を参照してください。See Querying Data to learn more.

using (var db = new BloggingContext())
{
    var blogs = db.Blogs
        .Where(b => b.Rating > 3)
        .OrderBy(b => b.Url)
        .ToList();
}

データの保存Saving Data

データはエンティティ クラスのインスタンスを利用し、データベース内で作成、削除、変更されます。Data is created, deleted, and modified in the database using instances of your entity classes. 詳細については、「Saving Data」 (データの保存) を参照してください。See Saving Data to learn more.

using (var db = new BloggingContext())
{
    var blog = new Blog { Url = "http://sample.com" };
    db.Blogs.Add(blog);
    db.SaveChanges();
}

次の手順Next steps

入門チュートリアルについては、「Entity Framework Core の概要」を参照してください。For introductory tutorials, see Getting Started with Entity Framework Core.