ASP.NET Core

ASP.NET Core Razor Pages - SQLite を利用する

2022年2月13日

ASP.NET Core Razor Pages プロジェクトで、SQLite を利用する方法を紹介します。

パッケージのインストール

次のパッケージをインストールします。

  • Microsoft.EntityFrameworkCore
  • Microsoft.EntityFrameworkCore.Sqlite
  • Microsoft.EntityFrameworkCore.SqlServer
  • Microsoft.EntityFrameworkCore.Tools

SQLite データベースファイルの用意

プロジェクトのルールフォルダ配下に Data フォルダを作成し、App.db などのデータベースファイルを作成します。

モデルクラスの用意

Models フォルダを作成し、任意のモデルクラスを作成します。

public class Post
{
    [Key]
    public string Id { get; set; }
    public string Title { get; set; }
    public string Description { get; set; }
    public DateTime PublishedDate { get; set; }
    public DateTime UpdatedDate { get; set; }
}

DbContext 継承クラスの用意

今回は、DbContext クラスを継承する、ApplicationDbContext クラスを用意します。OnConfiguring メソッドで、UseSqlite メソッドを通じて SQLite データベースを指定します。

public class ApplicationDbContext : DbContext
{
    public DbSet<Post> Posts { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlite(@"Data source=Data\\App.db");
    }
}

DbContext 継承クラスの登録

次の様に AddDbContext メソッドを通じて、ApplicationDbContext クラスを通じてデータベース操作ができるようにします。

var builder = WebApplication.CreateBuilder(args);

// Add services to the container.
builder.Services.AddRazorPages();
builder.Services.AddDbContext<ApplicationDbContext>();

EntityFrameworkCore によるマイグレーションとデータベース作成

Package Manager コンソール上で次の EntityFramework コマンドを実行し、Post モデルクラスからデータテーブルを作成します。※ Init は任意の名前(作業内容を示す)に変更できます。

Add-Migration Init
Update-Database

アプリケーションの動作確認

予め Post クラスと ApplicationDbContext クラスをベースに Index, Create, Delete, Details ページを作成しておきます。その上で、アプリケーションを実行し、https://localhost:12345/Posts/Index や /Posts/Create にアクセスし、データの読み込みや書き込みができることを確認します。詳細は、添付サンプルをご覧ください。

-ASP.NET Core