Entity Framework Core (EF Core) では、C# のクラス(POCO)をデータベースのテーブルに見立てて操作します。このクラスを「エンティティ(モデル)」と呼びます。
今回は、簡単なメッセージ投稿モデル(Post)を作成し、それを管理する DbContext を定義して、実際にデータベース(SQLite)を生成するまでの手順を解説します。
1. モデル(エンティティ)の定義
まずはデータベースのテーブルに対応するクラスを作成します。 EF Core の命名規則に従い、プロパティ名は PascalCase(先頭大文字)にするのが一般的です。また、Id または クラス名Id という名前のプロパティは、自動的にプライマリキーとして扱われます。
Post.cs
using System;
public class Post
{
// プライマリキー(自動採番)
public int PostId { get; set; }
// メッセージ内容
public string Message { get; set; }
// 送信日時
public DateTime SentTime { get; set; }
}
2. DbContext の定義
次に、データベースとのセッションを表す DbContext クラスを継承して、独自のコンテキストクラスを作成します。 ここで DbSet<T> プロパティを定義することで、そのクラスがデータベースのテーブルとして操作可能になります。
ExampleDbContext.cs
using Microsoft.EntityFrameworkCore;
public class ExampleDbContext : DbContext
{
// このプロパティ名(Posts)がテーブル名になります
public DbSet<Post> Posts { get; set; }
// データベース接続の設定
// ※実務では接続文字列を appsettings.json から読み込むことが多いですが、
// ここでは簡略化のために直接記述しています。
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// SQLiteを使用する設定
optionsBuilder.UseSqlite("Data Source=example.db");
}
}
3. データベースの作成 (マイグレーション)
コードの定義ができたら、EF Core のツール(dotnet ef)を使って、クラス定義を実際のデータベースに反映させます。
マイグレーションファイルの作成
まず、現在のモデルの状態を記録する「マイグレーション」を作成します。InitialCreate は任意の名前です。
dotnet ef migrations add InitialCreate
実行すると、Migrations フォルダが作成され、テーブル作成のためのコードが自動生成されます。
データベースへの反映
次に、作成されたマイグレーションを適用して、実際にデータベースファイル(example.db)を生成します。
dotnet ef database update
これで、Post クラスに対応した Posts テーブルを持つ SQLite データベースが作成されました。以降は ExampleDbContext を通してデータの追加や取得が行えるようになります。
