「UWP 開発メモ」の版間の差分
ナビゲーションに移動
検索に移動
(同じ利用者による、間の1版が非表示) | |||
1行目: | 1行目: | ||
− | ==UWP 開発メモ== | + | ==[[UWP 開発メモ]]== |
− | [[Universal Windows Platform]] | + | [[Universal Windows Platform]] | |
− | ==Windows SDK== | + | ==[[Windows]] SDK== |
*https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk | *https://developer.microsoft.com/ja-jp/windows/downloads/windows-10-sdk | ||
− | ==Windows Template Studio== | + | ==[[Windows]] Template Studio== |
*https://codezine.jp/article/detail/11282 | *https://codezine.jp/article/detail/11282 | ||
===インストール=== | ===インストール=== | ||
#メニュー[ツール]-[拡張機能と更新プログラム] | #メニュー[ツール]-[拡張機能と更新プログラム] | ||
− | #ダイアログの左側で[オンライン]を選択し、右上の検索窓に「"Windows Template Studio"」と入力、検索すると見つかる | + | #ダイアログの左側で[オンライン]を選択し、右上の検索窓に「"[[Windows]] Template Studio"」と入力、検索すると見つかる |
#[ダウンロード]ボタンをクリック | #[ダウンロード]ボタンをクリック | ||
− | ==Windows Community Toolkit== | + | ==[[Windows]] Community Toolkit== |
*https://docs.microsoft.com/ja-jp/windows/communitytoolkit/ | *https://docs.microsoft.com/ja-jp/windows/communitytoolkit/ | ||
===インストール=== | ===インストール=== | ||
− | #Visual Studio 2017以上 | + | #[[Visual Studio]] 2017以上 |
#Build 16299以上のプロジェクト | #Build 16299以上のプロジェクト | ||
#NuGetパッケージの管理から、Microsoft.Toolkit.UWP を検索し必要なパッケージをインストール | #NuGetパッケージの管理から、Microsoft.Toolkit.UWP を検索し必要なパッケージをインストール | ||
22行目: | 22行目: | ||
====XAML==== | ====XAML==== | ||
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" | xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls" | ||
− | ====C#==== | + | ====[[C#]]==== |
using Microsoft.Toolkit.Uwp; | using Microsoft.Toolkit.Uwp; | ||
==Entity Framework Core== | ==Entity Framework Core== | ||
*https://docs.microsoft.com/ja-jp/ef/core/get-started/uwp/getting-started | *https://docs.microsoft.com/ja-jp/ef/core/get-started/uwp/getting-started | ||
− | *https://docs.microsoft.com/ja-jp/ef/core/get-started/netcore/new-db-sqlite | + | *https://docs.microsoft.com/ja-jp/ef/core/get-started/netcore/new-db-[[sqlite]] |
*http://kuttsun.blogspot.com/2018/01/entity-framework-core.html | *http://kuttsun.blogspot.com/2018/01/entity-framework-core.html | ||
35行目: | 35行目: | ||
===ソリューションの構成=== | ===ソリューションの構成=== | ||
− | #UWPプロジェクト(Universal Windows) | + | #UWPプロジェクト(Universal [[Windows]]) |
− | #Modelプロジェクト(. | + | #Modelプロジェクト([[.NET]]Starndard Library + EntityFrameworkCore.Sqlite + EntityFrameworkCore.Tools) |
− | #移行プロジェクト(ダミー)(. | + | #移行プロジェクト(ダミー)([[.NET]]Core Console) |
===移行=== | ===移行=== | ||
*https://docs.microsoft.com/ja-jp/ef/core/managing-schemas/migrations/index | *https://docs.microsoft.com/ja-jp/ef/core/managing-schemas/migrations/index | ||
− | *http://typea.info/blg/glob/2017/08/uwp-sqlite-entityframework-core.html | + | *http://typea.info/blg/glob/2017/08/uwp-[[sqlite]]-entityframework-core.html |
====パッケージマネージャーコンソールから以下を実行==== | ====パッケージマネージャーコンソールから以下を実行==== | ||
48行目: | 48行目: | ||
##DbContextのサブクラス | ##DbContextのサブクラス | ||
##DbSet<モデル> | ##DbSet<モデル> | ||
− | ##context.Database.Migration() の呼び出し記述 | + | ##context.[[Database]].Migration() の呼び出し記述 |
#初期マイグレーションの構成 | #初期マイグレーションの構成 | ||
##移行プロジェクト(ダミー)をスタートアッププロジェクトに設定 | ##移行プロジェクト(ダミー)をスタートアッププロジェクトに設定 | ||
55行目: | 55行目: | ||
##ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される | ##ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される | ||
#UWPアプリの実行 | #UWPアプリの実行 | ||
− | ##context.Database.Migration() の呼び出し | + | ##context.[[Database]].Migration() の呼び出し |
##Sqliteデータベースが作成、マイグレーション実行 | ##Sqliteデータベースが作成、マイグレーション実行 | ||
#データベースの確認 | #データベースの確認 | ||
66行目: | 66行目: | ||
##ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される | ##ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される | ||
#以下繰り返し | #以下繰り返し | ||
− | === | + | ===[[Powershell]]コマンド=== |
====初期移行==== | ====初期移行==== | ||
Add-Migration {任意のマイグレーション名} | Add-Migration {任意のマイグレーション名} | ||
87行目: | 87行目: | ||
====データベースを更新==== | ====データベースを更新==== | ||
− | Update-Database | + | Update-[[Database]] |
====移行の削除==== | ====移行の削除==== | ||
*移行の追加後、適用する前に EF Core モデルの追加変更が必要なことに気付く場合があります。 最後の移行を削除するには、このコマンドを使用 | *移行の追加後、適用する前に EF Core モデルの追加変更が必要なことに気付く場合があります。 最後の移行を削除するには、このコマンドを使用 | ||
− | + | [[R]]emove-Migration | |
====移行を元に戻す==== | ====移行を元に戻す==== | ||
*移行をデータベースに既に適用しているが、元に戻す必要がある場合、同じコマンドを使用して移行を適用できますが、ロールバックする移行の名前を指定 | *移行をデータベースに既に適用しているが、元に戻す必要がある場合、同じコマンドを使用して移行を適用できますが、ロールバックする移行の名前を指定 | ||
− | Update-Database {ロールバックする移行の名前} | + | Update-[[Database]] {ロールバックする移行の名前} |
− | ==== | + | ====[[SQL]]スクリプトを作成==== |
Script-Migration | Script-Migration | ||
====実行時に移行を適用==== | ====実行時に移行を適用==== | ||
*起動中または最初の実行中、実行時に移行を適用するアプリがあります。 Migrate() メソッドを使用してこれを行います | *起動中または最初の実行中、実行時に移行を適用するアプリがあります。 Migrate() メソッドを使用してこれを行います | ||
− | myDbContext.Database.Migrate(); | + | myDbContext.[[Database]].Migrate(); |
==MVVM Light== | ==MVVM Light== | ||
− | ==== | + | ====[[R]]elayCommand==== |
*http://my-clip-devdiary.blogspot.com/2011/01/relaycommand-mvvm-light-toolkit.html | *http://my-clip-devdiary.blogspot.com/2011/01/relaycommand-mvvm-light-toolkit.html | ||
=====コマンドパラメータなし===== | =====コマンドパラメータなし===== | ||
107行目: | 107行目: | ||
<Button Content="Add" Command="{x:Bind ViewModel.AddCommand}" /> | <Button Content="Add" Command="{x:Bind ViewModel.AddCommand}" /> | ||
*ViewModel | *ViewModel | ||
− | public | + | public [[R]]elayCommand AddCommand { get; private set; } |
− | = new | + | = new [[R]]elayCommand(async () => { |
await new MessageDialog("Foo", "Bar").ShowAsync(); | await new MessageDialog("Foo", "Bar").ShowAsync(); | ||
}); | }); |
2020年2月16日 (日) 04:33時点における最新版
目次
UWP 開発メモ
Windows SDK
Windows Template Studio
インストール
- メニュー[ツール]-[拡張機能と更新プログラム]
- ダイアログの左側で[オンライン]を選択し、右上の検索窓に「"Windows Template Studio"」と入力、検索すると見つかる
- [ダウンロード]ボタンをクリック
Windows Community Toolkit
インストール
- Visual Studio 2017以上
- Build 16299以上のプロジェクト
- NuGetパッケージの管理から、Microsoft.Toolkit.UWP を検索し必要なパッケージをインストール
参照
XAML
xmlns:controls="using:Microsoft.Toolkit.Uwp.UI.Controls"
C#
using Microsoft.Toolkit.Uwp;
Entity Framework Core
- https://docs.microsoft.com/ja-jp/ef/core/get-started/uwp/getting-started
- https://docs.microsoft.com/ja-jp/ef/core/get-started/netcore/new-db-sqlite
- http://kuttsun.blogspot.com/2018/01/entity-framework-core.html
インストール
- NuGetパッケージマネージャー Microsoft.EntityFrameworkCore.Sqlite
Sqlite3ファイルが生成される場所
- ApplicationData.Current.LocalFolder.Path
ソリューションの構成
- UWPプロジェクト(Universal Windows)
- Modelプロジェクト(.NETStarndard Library + EntityFrameworkCore.Sqlite + EntityFrameworkCore.Tools)
- 移行プロジェクト(ダミー)(.NETCore Console)
移行
- https://docs.microsoft.com/ja-jp/ef/core/managing-schemas/migrations/index
- http://typea.info/blg/glob/2017/08/uwp-sqlite-entityframework-core.html
パッケージマネージャーコンソールから以下を実行
- プロジェクトの構成
- DbContextのサブクラス
- DbSet<モデル>
- context.Database.Migration() の呼び出し記述
- 初期マイグレーションの構成
- 移行プロジェクト(ダミー)をスタートアッププロジェクトに設定
- 既定のプロジェクトに、Modelプロジェクトを指定
- PM> Add-Migration {初期Migration名}
- ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される
- UWPアプリの実行
- context.Database.Migration() の呼び出し
- Sqliteデータベースが作成、マイグレーション実行
- データベースの確認
- select * from __EFMigrationsHistory にマイグレーション情報
- 変更マイグレーション
- モデルの追加・変更などをModelプロジェクトに適用
- 移行プロジェクト(ダミー)をスタートアッププロジェクトに設定
- 既定のプロジェクトに、Modelプロジェクトを指定
- PM> Add-Migration {変更Migration名}
- ModelプロジェクトのMigratinosディレクトリにDbContextのリフレクションにより移行スクリプトが構成される
- 以下繰り返し
Powershellコマンド
初期移行
Add-Migration {任意のマイグレーション名}
- ディレクトリの下で 3 つのファイルがプロジェクトに追加
ファイル | 内容 |
---|---|
00000000000000_{任意のマイグレーション名}.cs | メインの移行ファイル。 (Up() で) 移行を適用し、(Down() で) それを元に戻すために必要な操作が含まれます。 |
00000000000000_{任意のマイグレーション名}.Designer.cs | 移行メタデータ ファイル。 EF によって使用される情報が含まれます。 |
MyContextModelSnapshot.cs | 現在のモデルのスナップショット。 次の移行を追加するときの変更内容の決定に使用されます。 |
データベースを更新
Update-Database
移行の削除
- 移行の追加後、適用する前に EF Core モデルの追加変更が必要なことに気付く場合があります。 最後の移行を削除するには、このコマンドを使用
Remove-Migration
移行を元に戻す
- 移行をデータベースに既に適用しているが、元に戻す必要がある場合、同じコマンドを使用して移行を適用できますが、ロールバックする移行の名前を指定
Update-Database {ロールバックする移行の名前}
SQLスクリプトを作成
Script-Migration
実行時に移行を適用
- 起動中または最初の実行中、実行時に移行を適用するアプリがあります。 Migrate() メソッドを使用してこれを行います
myDbContext.Database.Migrate();
MVVM Light
RelayCommand
コマンドパラメータなし
- XAML
<Button Content="Add" Command="{x:Bind ViewModel.AddCommand}" />
- ViewModel
public RelayCommand AddCommand { get; private set; } = new RelayCommand(async () => { await new MessageDialog("Foo", "Bar").ShowAsync(); });
© 2006 矢木浩人