エンジニア初心者がC#/ASP.NETを学ぶ 仕事

asp.net core mvcでwebアプリ作ってみた。

2024年10月19日

Visual Stuido Community 2022をインストール


Community2022をインストールする

ASP.NET Core MVCの準備


新しいプロジェクトの作成。

MVCを選択する。

プロジェクト名を変更。今回は上記のようにしたが、プロジェクト名をParttimeReportWeb、ソリューション名を Parttime にしても良い。ソリューションの中に複数のプロジェクトが含むことができる。

認証の種類はつけてもいいが今はシンプルにしたいのでチェックを付けない。

httpsをクリックしてアプリケーションを実行すると、プロジェクトがビルドされ、ブラウザが開く。

EFCoreのインストール


先にデバッグの停止をする。

Install-Package Microsoft.EntityFrameworkCore.SqlServer -Version 6.0.35
Install-Package Microsoft.EntityFrameworkCore.Design -Version 6.0.35


上記のようにバージョンを指定しないと、.NET6用の最新バージョン(6.0.0~)をインストールしようとし、互換性がないため以下エラーが表示された。ちなみに.NET6と互換性がある以下パッケージの最新のバージョンは6.0.35っぽい。間違えていたら教えて欲しい。

Install-Package : NU1202: パッケージ Microsoft.EntityFrameworkCore.Design 8.0.10 は net6.0 (.NETCoreApp,Version=v6.0) と互換性があり
ません。 パッケージ Microsoft.EntityFrameworkCore.Design 8.0.10 がサポートするもの: net8.0 (.NETCoreApp,Version=v8.0)
発生場所 行:1 文字:1
+ Install-Package Microsoft.EntityFrameworkCore.Design
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCo 
   mmand
 
Install-Package : パッケージの復元に失敗しました。'ParttimeReport' のパッケージの変更をロールバックします。
発生場所 行:1 文字:1
+ Install-Package Microsoft.EntityFrameworkCore.Design
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : NotSpecified: (:) [Install-Package], Exception
    + FullyQualifiedErrorId : NuGetCmdletUnhandledException,NuGet.PackageManagement.PowerShellCmdlets.InstallPackageCo 
   mmand

 


ツール>Nugetパッケージ マネージャー>ソリューションのNugetパッケージの管理 でインストールできているか確認することができる。

EFCoreはデータベースへの接続や操作を簡単にしてくれる便利なツール

データモデルのクラスの定義

Entity Framework CoreやMVCアプリケーションで作業する際、データベースに直接テーブルを作成することはしないみたい。代わりに、プロジェクト内でモデルを作成し、migrationを実行することで自動的テーブルを作成してくれる。



テーブルの内容を記載する。このParttimeクラスの中で、複数のプロパティを作成する。Parttimeテーブルに欲しいすべてカラムを作成する。プロジェクト名とモデルに追加するクラス名、データベース名を同じにしちゃダメっぽい。同じにすると失敗する。

テーブルの主キーとして、Idをプロパティとして定義したんだけど、モデル内でそれを明示的に定義することもできるらしい。Data Annotaionと呼ばれるものを使用するみたい。

スキャフォールディング

登録・更新・削除などのプログラムを自動で生成してくれる便利な機能をスキャフォールディングという。


マイグレーション

モデルの中のParttimeクラスに合わせてテーブルを作成する。

Add-Migration InitialCreate
Update-Database

Nugetで上記コマンドを実行する。



データベースの作成

SQL Serverをダウンロード


SSMSをダウンロード

日本語版をインストールする。

Windows認証でログイン


SSMS でつなぐときは、『サーバー証明書を信頼する』にチェックすればエラーは表示されなくなった。


接続文字列の変更

このプログラムはどのデータベースに接続するかということ。やりたいこととしては、appsettings.jsonにデータベースの接続文字列を設定する。

接続文字列の取得方法は、左のSQLサーバー、オブジェクトエクスプローラーを開き、既存のSQLサーバー名を選択。(SSMSにログインする時のサーバー名)
データベースを展開すると、先ほど作成したParttimeDBをクリック。
右下のプロパティウィンドウの接続文字列の値をコピーする。

ConnectionStringsのParttimeReportContextの値にそのまま貼り付ける。

Add-Migration InitialCreate
Update-Database

再度、上記コマンドをツール>Nuget パッケージマネージャー>パッケージマネージャーコンソール で実行するとテーブルが作成される。



-エンジニア初心者がC#/ASP.NETを学ぶ, 仕事