UWPでEntity Framework CoreのSQLiteを使う(備忘録)
ずいぶん昔に作りかけのプロジェクトを見てみると、ListViewに入れるリストに対するCRUDの実装を色んなクラスとか用いてゴリ押しで行っていたことがありました。(数か月後に見返してヤバイと思ったことが…)
これじゃいけないと考え、ほかの方法を探しました。
そして、様々な方のブログを読み、MSの開発者向けサイトにも説明してあるFE Coreを利用したSQLiteを利用することにしました。(なぜ早く考え付かなかった)
Getting Started on UWP - New Database - EF Core | Microsoft Docs
詳細はこちらのサイトに書いてあるので、自分のための備忘録として情報を整理しました。
- バージョンの問題
SQLiteを利用するにはこちらの二つをインストールする必要があります。
> Microsoft.EntityFrameworkCore.Sqlite
> Microsoft.EntityFrameworkCore.Tools
公式サイトでは”.NET Core 2.0.0 SDK or later.”と書いてあるのですが、私の環境では依存関係で問題が起きたので、それぞれ1.1.3、1.1.2のバージョンを利用しています。
なお、その時のプロジェクト自体VS2015の頃から使っていたため、他のバージョンが古いものがあったのかもしれません。そのため、次にVS2017 で新規で作る際は、問題ないかもしれません。
最新版をインストールしようとして問題が起これば、1.1.xを利用する必要があるかもしれませんね。
- CRUDの実装
private async void InsertButton_Click(object sender, RoutedEventArgs e) { // レコードの追加 using (var db = new BloggingContext()) { var blog = new Blog { Name = "Test01" }; db.Blog.Add(blog); await db.SaveChangesAsync(); } } private async void RetrieveButton_Click(object sender, RoutedEventArgs e) { // レコードの取得 using (var db = new BloggingContext()) { foreach (var blog in db.Blog) { await new MessageDialog($"ID = {blog.BlogId}, Name = {blog.Url}").ShowAsync(); } } } private async void UpdateButton_Click(object sender, RoutedEventArgs e) { // レコードの更新 using (var db = new BloggingContext()) { var blog = db.Blog.Where(x => x.ID == 1).FirstOrDefault(); blog.Name = "Test02"; await db.SaveChangesAsync(); } } private async void DeleteButton_Click(object sender, RoutedEventArgs e) { // レコードの削除 using (var db = new BloggingContext()) { var blog = db.Blog.Where(x => x.ID == 1).FirstOrDefault(); db.Blog.Remove(blog); await db.SaveChangesAsync(); } }
以下、大変参考になったブログです。
blog.okazuki.jp