Entity Framework Coreとは?
Entity Framework (EF) Coreは、Microsoftが開発したオープンソースのオブジェクトリレーショナルマッピング(ORM)フレームワークです。これは、データベースとのインタラクションを抽象化し、開発者がより直感的にデータベース操作を行えるようにするためのものです。EF Coreを使用することで、SQLクエリを直接書くことなく、C#のコードでデータ操作を行うことができます。
主な機能とメリット
- LINQクエリ - EF Coreは、言語統合クエリ(LINQ)をサポートしており、データベースクエリをC#のコードで簡単に記述できます。
- マイグレーションサポート - データベーススキーマの変更をC#コードを通じて行うことができ、これによりデータベースのバージョン管理が容易になります。
- 多様なデータベースサポート - EF Coreは、SQL Server、MySQL、SQLiteなど、多くのデータベースプロバイダに対応しています。
環境のセットアップ
EF Coreを使用するためには、Visual Studioで.NETプロジェクトを設定し、必要なNuGetパッケージをインストールする必要があります。以下は基本的なステップです:
- Visual Studioを開き、新しいプロジェクトを作成します。
- NuGetパッケージマネージャを使用して、「Microsoft.EntityFrameworkCore」をプロジェクトに追加します。
- データベースプロバイダに応じて、追加のパッケージ(例えば「Microsoft.EntityFrameworkCore.SqlServer」)をインストールします。
基本的な使用方法
- データモデルの定義 - まず、データベースのテーブルに相当するC#クラス(エンティティ)を定義します。
- DbContextの作成 - DbContextクラスを継承して、エンティティとのインタラクションを管理するクラスを作成します。
- データ操作 - DbContextを使用してデータのCRUD操作(作成、読み取り、更新、削除)を行います。
実際のコード例
// データモデル
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
// DbContextの定義
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
}
}
// データ操作の例
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://blogs.msdn.com/adonet" };
context.Blogs.Add(blog);
context.SaveChanges();
}
実際のコード例の解説
1. データモデルの定義
public class Blog
{
public int BlogId { get; set; }
public string Url { get; set; }
}
-
役割: この部分は、データモデルを定義しています。ここでは
Blog
というクラスを定義しており、データベースのBlog
テーブルのスキーマを表しています。BlogId
とUrl
は、テーブルのカラムに相当します。 -
詳細:
BlogId
はブログの一意の識別子(主キー)であり、Url
はブログのURLを保持するフィールドです。{ get; set; }
はプロパティのゲッターとセッターで、これによりプロパティの値を取得または設定できます。
2. DbContextの作成
public class BloggingContext : DbContext
{
public DbSet<Blog> Blogs { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
optionsBuilder.UseSqlServer(@"Server=(localdb)\mssqllocaldb;Database=Blogging;Integrated Security=True");
}
}
-
役割:
BloggingContext
クラスは、データベース操作のための主要なクラスです。これはDbContext
クラスを継承しており、EF Coreでのデータ操作の中心的な役割を果たします。 -
詳細:
-
DbSet<Blog> Blogs
: これはBlog
エンティティに対するクエリを行ったり、データを保存するために使用されるプロパティです。 -
OnConfiguring
: このメソッドはデータベース接続の設定を行います。ここでは、SQL Serverデータベースへの接続文字列を設定しています。
-
3. データ操作の例
using (var context = new BloggingContext())
{
var blog = new Blog { Url = "http://blogs.msdn.com/adonet" };
context.Blogs.Add(blog);
context.SaveChanges();
}
-
役割: このコードブロックは、実際にデータベースに対して操作を行っています。ここでは、新しい
Blog
エンティティを作成し、それをデータベースに追加しています。 -
詳細:
-
new BloggingContext()
:BloggingContext
のインスタンスを作成します。これにより、データベース操作のためのコンテキストが提供されます。 -
new Blog { Url = ... }
: 新しいBlog
オブジェクトを作成し、そのUrl
プロパティを設定しています。 -
context.Blogs.Add(blog)
: 作成したBlog
オブジェクトをDbSet
に追加します。これにより、オブジェクトがデータベースに挿入される準備が整います。 -
context.SaveChanges()
: 変更をデータベースに保存します。この命令により、前の行で追加されたBlog
オブジェクトがデータベースに実際に挿入されます。
-