ASP.NET Core3.1 とMariaDBでWebアプリケーションを作成する。(データベースファースト)
Webアプリケーション をASP.NET Core3.1のデータベースファーストで作成します。
データベースは、MariaDBを使用します。
前提
- Windows10
- MariaDB 10.4
- VisualStudio 2019 Version 4.8.03752
以下の記事を参考にして、Webアプリケーションのプロジェクトを作成します。
wanouri.hatenablog.com
以下の記事を参考にして、MariaDB環境を構築しテーブルを作成します。
wanouri.hatenablog.com
テーブルは、以下の様なテーブルを準備しました。
CREATE TABLE `items` ( `code` INT(11) NOT NULL DEFAULT 0 COMMENT '商品コード', `name` VARCHAR(50) NULL DEFAULT NULL COMMENT '商品名', PRIMARY KEY (`code`) ) ENGINE=InnoDB ;
プロジェクトファイルを編集する
- ソリューションエクスプローラーよりプロジェクトファイルを右クリックして、「プロジェクトファイルの編集」を選択します。
- ItemGroupタグに、下記を追加してソリューションのビルドを行います。
<ItemGroup> <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="3.1.1"> <IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets> <PrivateAssets>all</PrivateAssets> </PackageReference> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql" Version="3.1.1" /> <PackageReference Include="Pomelo.EntityFrameworkCore.MySql.Design" Version="1.1.2" /> <PackageReference Include="Microsoft.VisualStudio.Web.CodeGeneration.Design" Version="3.1.1" /> </ItemGroup>
Models生成
- ツールよりコマンドラインを選択して、「開発者用PowerShell」を選択します。
- EF Core ツールをインストールします。
dotnet tool install --global dotnet-ef
- 次に以下のコマンドを実行します。
dotnet ef dbcontext scaffold server="localhost;port=3306;database=(sampledb);uid=(user);password=(password);" "Pomelo.EntityFrameworkCore.MySql" --output-dir Models
- PowerShell にBuild succeeded. と表示されたら、Modelsフォルダに (テーブル名).cs ファイルが作成されています。
appsettings.jsonを編集
下記を追加
"ConnectionStrings": { "RazorPagesMovieContext": "server=localhost;port=3306;database=(sampledb);uid=(user);password=(password)" }
Startup.csを編集
変更前:
public void ConfigureServices(IServiceCollection services) { services.AddControllersWithViews(); }
変更後:
static readonly string _RequireAuthenticatedUserPolicy = "RequireAuthenticatedUserPolicy"; public void ConfigureServices(IServiceCollection services) { services.AddDbContext<Models.sampledbContext>(options => options.UseMySql( Configuration.GetConnectionString("RazorPagesMovieContext"))); services.AddControllersWithViews(); services.AddRazorPages(); services.AddAuthorization(o => o.AddPolicy(_RequireAuthenticatedUserPolicy, builder => builder.RequireAuthenticatedUser())); }
スキャフォールディング
- ソリューションエクスプローラのControllersを右クリックして、新規スキャフォールディングアイテムをクリックします。
- 「Entity Frameworkを使用したビューがあるMVCコントローラ」を選択して追加ボタンをクリックします。
- 「モデルクラス」、「データコンテキストクラス」を選択して追加ボタンを押します。
デバッグ実行
- デバッグを開始して、URLの末尾にitemsと付加して更新します。(以下は例)
https://localhost:44335/items
- テーブルの内容が表示されます。