2回目はローカルにSQL Serverを準備して、作成したテーブルのModelを作るまで。
今回もこちらの書籍を参考に。
環境
- Visual Studio 2022
- .NET 7
- .NET 6
- SQL Server Management Studio v20.1
SQL Server Management Studioの導入
ダウンロードしてインストールの実行。最初のサーバーログインなどはメモできていなかった...。
Databaseの作成
Object Explorerで右クリックして、「New Database」を選択。
New DatabaseダイアログのDatabase nameに「mvcdb」などと入力し、
「OK」ボタンをクリックする。
テーブルの作成
先ほど作成されたDatabaseの中に「Tables」という項目があるので、右クリック > New > Tableと進む。
下図のようなテーブルを作成する。
idをプライマリーキーにするために、id上で右クリックして「Set Primary Key」を選択。このテーブルを保存しようとすると、テーブル名を求められるので「Person」と入力。
次に作成されたテーブルの上で右クリックして「Edit Top 200 Rows」を選択
サンプル用のデータを入力しておく。
Microsoft.EntityFrameworkCoreのパッケージを追加
Visual StudioのNuGet管理で、下記3つのパッケージを追加する。
参考書籍には、最新のものを使うようにと記載があるが、2024年9月現在で最新のものを使おうとすると、下記のようなエラーが出る。
なので、テキスト記載の同じバージョンに変更する(7.0.5)
プルダウンで見るとだいぶ下の方にある...。
Modelクラスを生成する
データベースにアクセスするアプリケーションを作成するのに、下記2点のアプローチがある
- コードからデータベースのテーブルを構築
- 既存のデータベースのテーブルからModelクラスを作る(今回)
また、今回はコマンドラインでModelクラスを作成する。そのため、PowerShellでプロジェクトのルートディレクトリへ移動する。そのルートディレクトリはVisual Studioのプロパティウィンドウで確認できる。
ルートディレクトリへ移動後に、
dotnet ef
と実行してみて、コマンドが使えるか確認をする。下記のようなエラーが出る場合
指定されたコマンドまたはファイルが見つからなかったため、実行できませんでした。
dotnet-efをインストールしなければならない
dotnet tool install --global dotnet-ef
コマンドの書式
dotnet ef dbcontext scaffold 接続文字列 Microsoft.EntityFrameworkCore.SqlServer -o 出力フォルダ
接続文字列は、Visual StudioのSQL Serverオブジェクトエクスプローラーから確認できる。
※最初にSQLサーバへ接続する必要があるが、その手順はメモできておらず...。
出力フォルダはVisual Studioにある「Models」を使用する。
上記コマンドを実行すると、Personテーブルを反映したModelがModelsディレクトリに生成されていることがわかる。