今回は、ASP.NET Core 3.1 MVC アプリの開発環境を Windows に準備します。
RDBMS は本業で SQLServer を10年近く使用しているため、SQLServer でと考えていましたが、SQL Server on Linux を動作させるためのマシンのメモリが、最低2GB要求されるため、今回は SQLite を使用します。
Windows 開発環境を構築
ローカル環境
OS | Windows10 |
IDE | Visual Studio 2019 v16.4~ |
SDK | ASP.NET Core 3.1 |
RDBMS | SQLite 3.30.1 |
.NET Core 3.1 SDK インストール
Download .NET Core 3.1 から、SDK をダウンロードして、インストールします。
SQLite CommandLine Tools インストール
SQLite Download Page から、sqlite-tools-win32-x86-3300100.zip をダウンロードして、任意の場所に展開します。CLI を使いやすいようにパスを通しておきましょう。
1 2 3 |
:: バージョンを確認 sqlite3 -version 3.30.1 2019-10-10 20:19:45 18db032d058f1436ce3d~ |
ASP.NET Core MVC プロジェクトの作成
プロジェクト作成の手順が分からない場合は、次の記事を参考にしてください。
ASP.NET Core 3.1 の要件
Visual Studio 2019 でASP.NET Core 3.1 を使用する場合には v16.4 以上である必要があります。要件を満たしていない場合は、「ヘルプ / 更新プログラムの確認」より Visual Studio 2019 をアップデートしてください。また、このアップデートは、OS 再起動を求められます。
SQLite パッケージインストール
NuGetパッケージマネジャーより、次のパッケージをインストールします。
- Microsoft.EntityFrameworkCore.Sqlite
NLog パッケージインストール
ASP.NET Core では、組み込みやサード パーティ製のさまざまなログプロバイダーと連携するログ API がサポートされています。公式ページにはログプロバイダーの一覧があります。その中で便利な NLog を使用します。
NLog の設定方法は、Getting started with ASP.NET Core 3 を参考にしてください。
ASP.NET Core 2.x の NLog は、次の記事にまとめています。
Startup.cs
SQLite を使用するように、Startup.cs を変更します。
1 2 3 4 5 6 7 8 9 10 |
public void ConfigureServices(IServiceCollection services) { services.AddDbContext<ApplicationDbContext>(options => options.UseSqlite( Configuration.GetConnectionString("DefaultConnection"))); services.AddDefaultIdentity<IdentityUser>(options => options.SignIn.RequireConfirmedAccount = false) .AddEntityFrameworkStores<ApplicationDbContext>(); services.AddControllersWithViews(); services.AddRazorPages(); } |
appsettings.json
SQLite を使用するように、”DefaultConnection” を変更します。
1 2 3 |
"ConnectionStrings": { "DefaultConnection": "Data Source=app.db" }, |
マイグレーション
Visual Studio のパッケージマネジャーコンソールからプロジェクトファイルがあるフォルダに移動して、次のコマンドを実行します。
1 2 3 4 |
dotnet tool install --global dotnet-ef dotnet add package Microsoft.EntityFrameworkCore.Design dotnet ef migrations add InitialCreate dotnet ef database update |
”dotnet ef database update” 実行時に僕の環境では、”System.NotSupportedException: SQLite does not support this migration operation (‘AlterColumnOperation’).” が発生。https://github.com/aspnet/AspNetCore.Docs/issues/11268 にあるように、”dotnet ef migrations remove” 実行後に、再度 ”dotnet ef database update” を実行すると成功しました。
デバッグ
IIS Expresss でデバッグを実行します。トップページの Register リンクをクリックして、アカウントを登録します。

上記の図のようにログイン状態になると、アカウント登録は成功です。一応データベースの登録内容を確認します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
:: プロジェクトファイルのフォルダに移動 cd ***** :: データベースに接続 sqlite3 app.db SQLite version 3.30.1 2019-10-10 20:19:45 Enter ".help" for usage hints. :: テーブル一覧を確認 sqlite>.table AspNetRoleClaims AspNetUserLogins AspNetUsers AspNetRoles AspNetUserRoles __EFMigrationsHistory AspNetUserClaims AspNetUserTokens :: 登録したアカウントを確認 sqlite> select * from AspNetUsers where Email = 'hogehoge@test.com'; ab548b2b-20d2-4919-8bfc-4333142de1af|hogehoge@test.com|HOGEHOGE@TEST.COM|hogehoge@test.com|HOGEHOGE@TEST.COM|0|AQAAAAEAACcQAAAAEOdAd+ybsxorv8CXwrDFUtlwIFihFcxtoWpWBG7rbmHFCbalS+EQZjKCW1fLi8bRSQ==|KYKMPFJ5M47IIAB6NM77MNO6SC66CIO7|ae690c9f-b207-4a51-b8f2-67e3479a88c2||0|0||1|0 |
今回作成した ASP.NET Core MVC アプリを WSL Ubuntu + Nginx でホストするのは、こちらをご覧ください。