【完全入門】C# × Entity Framework Core × SQLiteで始めるデータベースアプリ開発

C#でデータベースを扱うときに便利なのが、Entity Framework Core(以下EF Core)です。
SQLを直接書かずに、クラスを通してデータベース操作ができるため、開発効率が大幅に向上します。

本記事では、SQLiteを使ったシンプルなサンプルアプリを題材に、Entity Framework Coreの導入からCRUD操作(データの登録・取得・更新・削除)までをわかりやすく解説します。
Visual StudioやVS Codeで簡単に試せる内容なので、これからC#でデータベースアプリを作りたい方におすすめです。


Entity Framework Coreとは

Entity Framework Core(EF Core)は、Microsoftが開発したO/Rマッパー(Object Relational Mapper)です。
プログラム上のクラスとデータベースのテーブルを自動的に対応づけてくれるため、SQL文を直接書かずにデータ操作ができます。

主な特徴

  • マルチデータベース対応:SQLite、SQL Server、MySQL、PostgreSQLなどに対応。
  • コードファースト開発:C#のクラス定義からデータベースを自動生成できる。
  • LINQによる簡単な操作from ... where ... select ... のような直感的な構文でデータを扱える。

SQLiteは軽量で環境構築が簡単なため、学習や小規模アプリに最適です。


環境準備

まずは開発環境を整えましょう。

必要なもの

  • .NET SDK(7.0以上を推奨)
  • Visual Studio 2022 または VS Code
  • SQLite(組み込みで動作)

プロジェクトの作成

ターミナルまたはコマンドプロンプトで以下を実行します。

dotnet new console -n EfSqliteSample
cd EfSqliteSample

次に、Entity Framework CoreとSQLiteのプロバイダーをインストールします。

dotnet add package Microsoft.EntityFrameworkCore
dotnet add package Microsoft.EntityFrameworkCore.Sqlite
dotnet add package Microsoft.EntityFrameworkCore.Tools

これで準備完了です。


サンプルプログラムの概要

今回作るサンプルは、シンプルな「ユーザー管理アプリ」です。
ユーザー(名前・メールアドレス)を登録・一覧表示・更新・削除します。

構成は以下の通りです。

EfSqliteSample/
├── Program.cs
├── Models/
│   └── User.cs
└── Data/
    └── AppDbContext.cs

Userモデルを作成する

まずは、データベースに対応するエンティティクラスを作ります。

Models/User.cs を作成して、以下のように記述します。

using System.ComponentModel.DataAnnotations;

namespace EfSqliteSample.Models
{
    public class User
    {
        [Key]
        public int Id { get; set; }

        [Required]
        public string Name { get; set; } = string.Empty;

        [Required]
        public string Email { get; set; } = string.Empty;
    }
}
  • [Key] は主キーを示します。
  • [Required] は必須項目です。

DbContextクラスを作成する

EF Coreでは、DbContextクラスを通じてデータベースにアクセスします。

Data/AppDbContext.cs を作成して、以下のように記述します。

using Microsoft.EntityFrameworkCore;
using EfSqliteSample.Models;

namespace EfSqliteSample.Data
{
    public class AppDbContext : DbContext
    {
        public DbSet<User> Users { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite("Data Source=users.db");
        }
    }
}

ここでUseSqlite()により、SQLiteデータベースusers.dbを指定しています。
このファイルはアプリ実行時に自動生成されます。


データベースの作成

初回はマイグレーション機能を使ってデータベースを生成します。

コマンドを実行

dotnet ef migrations add InitialCreate
dotnet ef database update

実行後、プロジェクトフォルダにusers.dbが生成されれば成功です。


CRUD操作の実装(Program.cs)

次に、データ登録・取得・更新・削除を行うコードを実装します。

Program.cs に以下を記述してください。

using EfSqliteSample.Data;
using EfSqliteSample.Models;

using (var db = new AppDbContext())
{
    // --- Create ---
    var user = new User { Name = "山田太郎", Email = "taro@example.com" };
    db.Users.Add(user);
    db.SaveChanges();
    Console.WriteLine($"登録完了: {user.Name}");

    // --- Read ---
    var users = db.Users.ToList();
    Console.WriteLine("【ユーザー一覧】");
    foreach (var u in users)
    {
        Console.WriteLine($"{u.Id}: {u.Name} ({u.Email})");
    }

    // --- Update ---
    var target = db.Users.First();
    target.Email = "new_email@example.com";
    db.SaveChanges();
    Console.WriteLine("更新完了");

    // --- Delete ---
    db.Users.Remove(target);
    db.SaveChanges();
    Console.WriteLine("削除完了");
}

実行結果例

登録完了: 山田太郎
【ユーザー一覧】
1: 山田太郎 (taro@example.com)
更新完了
削除完了

これで、基本的なCRUD操作が実現できました。


LINQで柔軟な検索

EF CoreではLINQを使って簡単に検索ができます。

var result = db.Users
    .Where(u => u.Name.Contains("田"))
    .OrderBy(u => u.Id)
    .ToList();

foreach (var u in result)
{
    Console.WriteLine($"{u.Name} さん");
}

SQLを直接書かなくても、条件検索やソートを簡単に記述できます。


データベースファイルの確認

users.dbはSQLite形式なので、外部ツールで中身を確認できます。

おすすめツール:

  • DB Browser for SQLite
  • SQLiteStudio

これらを使えば、テーブル構造やデータをGUIで確認できます。


コードファースト開発の利点

EF Coreの大きな特徴は「コードファースト」開発です。
モデルクラス(Userなど)を変更してマイグレーションを実行すれば、データベース構造が自動的に更新されます。

例:カラム追加

UserクラスにAgeプロパティを追加し、以下を実行します。

dotnet ef migrations add AddAge
dotnet ef database update

これだけで新しいカラムがDBに追加されます。


まとめ

本記事では、

  • Entity Framework Coreの概要
  • SQLiteとの接続設定
  • CRUD操作の実装
  • LINQによる検索方法
    を通して、C#で簡単にデータベースアプリを構築する方法を紹介しました。

SQLiteは軽量でインストール不要なため、学習や試作に最適です。
EF Coreを理解すれば、SQL ServerやMySQLなど他のDBにもスムーズに対応できます。

タイトルとURLをコピーしました