Entity Framework Core (EF Core) は、開発者が .NET オブジェクトを使用してデータベースを操作できるようにするオブジェクト リレーショナル マッピング (ORM) フレームワークです。 EF Core の重要な機能の 1 つは、データベースの移行を処理する機能です。
この記事では、EF Core の移行、移行が重要な理由、移行の使用方法について例を挙げて説明します。だから、始めるために:
C# はかなり前から存在しており、さらに拡張された機能を獲得しながら開発を続けています。 medium.com
EF Core 移行は、データベース スキーマへの変更を経時的に管理する方法です。データベース モデルに変更を加える場合 (テーブルや列の追加や削除など)、それらの変更を説明する移行を作成できます。
その後、移行を使用してデータベース スキーマを更新し、新しいモデルに一致させます。
EF Core 移行は、データを保持しながらデータベース スキーマを徐々に進化させることができるため、不可欠です。
移行がなければ、モデルに変更を加えるたびにデータベース スキーマを手動で変更する必要があり、時間がかかり、エラーが発生しやすくなります。
移行では、データベース スキーマのバージョンを管理する方法も提供されるため、変更を簡単に追跡し、必要に応じて以前のバージョンにロールバックできます。
EF Core 移行を使用するには、いくつかの手順に従う必要があります。
新しい EF Core プロジェクトを作成します。最初の手順は、Visual Studio で新しい EF Core プロジェクトを作成することです。これを行うには、[新しいプロジェクトの作成] を選択し、[ASP.NET Core Web アプリケーション] を選択して、[Web アプリケーション (モデル-ビュー-コントローラー)] テンプレートを選択します。
データベース コンテキストを作成します。次のステップは、データベース コンテキスト クラスを作成することです。このクラスは、.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」の 2 つの列を持つ単純な「Students」テーブルを作成するとします。まず、Visual Studio で新しい ASP.NET Core Web アプリケーション プロジェクトを作成します。
新しい EF Core プロジェクトを作成します。 Visual Studio で新しい ASP.NET Core Web アプリケーション プロジェクトを作成します。 「Web Application (Model-View-Controller)」テンプレートを選択し、認証に「Individual User Accounts」を選択します。プロジェクトに「EFCoreMigrationsExample」という名前を付けます。
データベース コンテキストを作成します。プロジェクトの「モデル」フォルダーに「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# の出版物、 LinkedIn 、 Instagram 、 Twitter 、 Dev.to
こちらにも掲載