はじめに
.NET開発において、データベース操作は必須のスキルです。
その中でも「Entity Framework(エンティティフレームワーク)」は、マイクロソフトが提供するORM(Object-Relational Mapping)ツールとして非常に人気があります。
本記事では、Entity Frameworkの概要から基本的な使い方まで、初心者でもわかりやすく解説します。
Entity Frameworkとは?
Entity Framework(以下EF)は、データベースのテーブルとC#のクラスを自動的にマッピングしてくれるORMライブラリです。
SQLを書かずに、C#のコードでデータ操作ができるため、開発効率が大幅に向上します。
EFは以下の特徴を持ちます。
- データベースの操作をオブジェクト指向で扱える
- 複雑なSQLを自動生成し、開発者の負担を軽減
- コードファースト、データベースファーストの両方に対応
- LINQで直感的なクエリ記述が可能
Entity Frameworkの種類
EFには主に2つの種類があります。
1. Entity Framework 6(EF6)
- .NET Framework向けの従来版
- 豊富な機能が揃っている
- レガシーシステムや既存プロジェクトでよく使われる
2. Entity Framework Core(EF Core)
- クロスプラットフォーム対応の軽量版
- .NET Core / .NET 5以降で利用可能
- モダンな設計でパフォーマンスも優れている
- 今後はこちらが主流になる
本記事では、今後の主流であるEntity Framework Coreの基本的な使い方を中心に紹介します。
Entity Framework Coreの導入方法
プロジェクトにEF Coreを追加する
まずは、.NETのプロジェクトにEF Coreのパッケージを追加します。
以下のコマンドを使用します。
今回はSqlServerを選択していますが、他のDBにも対応しています。
dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.SqlServer
dotnet add package Microsoft.EntityFrameworkCore.Tools
Microsoft.EntityFrameworkCore
:EF Coreの本体Microsoft.EntityFrameworkCore.SqlServer
:SQL Server用プロバイダーMicrosoft.EntityFrameworkCore.Tools
:マイグレーションやツール用
モデルクラスの作成
EF Coreでは、まずデータベースのテーブルに対応するモデルクラスを作成します。
例えば、顧客情報を表すCustomer
クラスは以下のようになります。
public class Customer
{
public int Id { get; set; }
public string Name { get; set; }
public string Email { get; set; }
}
このクラスが、データベースの「Customers」テーブルに対応します。
DbContextの作成
DbContext
はデータベースとのやりとりを管理するクラスです。
以下のように作成します。
using Microsoft.EntityFrameworkCore;
public class AppDbContext : DbContext
{
public DbSet<Customer> Customers { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer("Server=localhost;Database=MyAppDb;Trusted_Connection=True;");
}
}
DbSet<Customer>
がテーブルの役割OnConfiguring
で接続文字列を設定
基本的なCRUD操作
データの追加(Create)
using(var context = new AppDbContext())
{
var customer = new Customer { Name = "山田太郎", Email = "yamada@example.com" };
context.Customers.Add(customer);
context.SaveChanges();
}
データの取得(Read)
using(var context = new AppDbContext())
{
var customers = context.Customers.ToList();
foreach(var c in customers)
{
Console.WriteLine($"{c.Id}: {c.Name} - {c.Email}");
}
}
データの更新(Update)
using(var context = new AppDbContext())
{
var customer = context.Customers.First();
customer.Email = "newemail@example.com";
context.SaveChanges();
}
データの削除(Delete)
using(var context = new AppDbContext())
{
var customer = context.Customers.First();
context.Customers.Remove(customer);
context.SaveChanges();
}
マイグレーションによるデータベース管理
EF Coreでは、マイグレーション機能を使い、モデルの変更に合わせてデータベースを更新できます。
マイグレーションの作成
dotnet ef migrations add InitialCreate
データベースの更新
dotnet ef database update
マイグレーションを使うと、手動でSQLを実行せずにデータベーススキーマの管理が可能です。
まとめ
- Entity Frameworkは.NET開発でデータベース操作を効率化するORMツール
- EF Coreはクロスプラットフォーム対応の最新版
- モデルクラスとDbContextを作成し、LINQでCRUDが簡単にできる
- マイグレーション機能でデータベースのバージョン管理も可能
.NETでのデータアクセスをシンプルかつ堅牢にしたいなら、Entity Framework Coreは必須の技術です。
ぜひ本記事を参考に、EF Coreを使った開発を始めてみてください。