かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

UWP で EntityFramework Core 3.1.x を使う方法

かな~~~~り昔にやったのと変わってたのでメモ。

NuGet パッケージ

最低限だけでよければこれだけ。

  • Microsoft.EntityFrameworkCore.Sqlite

下準備

適当に DbContext を継承したクラスを作ります。

using Microsoft.EntityFrameworkCore;
using System;
using System.IO;

namespace SQLiteApp
{
    public class MyContext : DbContext
    {
        public DbSet<Person> People { get; set; }

        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            optionsBuilder.UseSqlite(
                "data source=sample.db"
            );
        }
    }

    public class Person
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
}

そして、OnLaunched の先頭に以下のコードを追加します。

SQLitePCL.Batteries_V2.Init();
SQLitePCL.raw.sqlite3_win32_set_directory(/*data directory type*/1, Windows.Storage.ApplicationData.Current.LocalFolder.Path);
SQLitePCL.raw.sqlite3_win32_set_directory(/*temp directory type*/2, Windows.Storage.ApplicationData.Current.TemporaryFolder.Path);

using (var context = new MyContext())
{
    context.Database.EnsureCreated();
}

後は好きに使おう。マイグレーションまわりがどうなってるのかは未確認。