ASP.NET Core コードファーストなscaffolding

優

弊社技術顧問の増田智明の著書紹介をかねた.Net Core MVCのチップスです。

.NET Coreを利用するとLinux、Windowsを問わずに動作するアプリケーションが作成出来ます。2章 “スキャフォールディングの利用”の一部を実際に行ってみます。

今回はコードで先にテーブル構造を定義して、スキャフォールディングでテーブルを設定していきます。前回とは手順が異なります。

前回

 

 

プロジェクトを作り直して始める。

.Net Core MVC スキャフォールディング scaffold

appsettings.jsonの接続が私の環境と合ってないようで。前回そういえばこの部分に関して設定を触っていなかったですね。

 

 

サーバー名を確認します。

 

 

.Net Core MVC スキャフォールディング scaffold

appsettings.jsonを書き換えます。

 

通りました(ㆁᴗㆁ✿)

 

 

.Net Core MVC スキャフォールディング scaffold

テーブルの状態が現状こうなっていて、コードでモデルを修正して、スキャフォールディングでDBを変更します。

 

コードファーストなスキャフォールディング

Personクラスの設定

.Net Core MVC スキャフォールディング scaffold

 

Prefectureクラスの設定

.Net Core MVC スキャフォールディング scaffold

Modelsにクラスを作っておきます。

 

 

PowerShellでマイグレーションを実行します。

dotnet ef migrations add 定義名
dotnet ef database update

 

 

ASP.Net Core MVC スキャフォールディング scaffold

Personテーブルの修正を確認。

 

 

 

コントローラの上書き

ASP.Net Core MVC スキャフォールディング scaffold

同名のコントローラを追加することで上書きを行います。

 

 

 

【Entity Frameworkを使用したビューがあるMVCコントローラ】を選択して【追加】を行います。

 

 

 

 

ASP.Net Core MVC スキャフォールディング scaffold

同名に設定します。

 

 

 

ASP.Net Core MVC スキャフォールディング scaffold

【はい】をクリックして上書きを行います。

 

 

 

ASP.Net Core MVC スキャフォールディング scaffold

【はい】をクリックします。

 

 

 

ASP.Net Core MVC スキャフォールディング scaffold

コントローラもビューも上書きされました。

 

 

 

IIS Expressを起動してビルドする

 

Personテーブルのテーブル構造の変更、Prefectureテーブルが作成されていることがわかります。

 

 

 

Prefectureテーブルにデータを入れてみる

IDENTITY_INSERT が OFF に設定されているときは、テーブル ‘Prefecture’ の ID 列に明示的な値を挿入できません。

何も考えずにINSERTをかけたらエラーが出ましたね~。

警告そのままにSET IDENTITY_INSERTをONにして、INSERTクエリが終わったらOFFで設定を戻しますよ!

 

SET IDENTITY_INSERT Prefecture ON;
INSERT INTO Prefecture (Id, Name) VALUES ( 1, '北海道' ),
	( 2, '青森県' ),
	( 3, '岩手県' ),
	( 4, '宮城県' ),
	( 5, '秋田県' ),
	( 6, '山形県' ),
	( 7, '福島県' ),
	( 8, '茨城県' ),
	( 9, '栃木県' ),
	( 10, '群馬県' ),
	( 11, '埼玉県' ),
	( 12, '千葉県' ),
	( 13, '東京都' ),
	( 14, '神奈川県' ),
	( 15, '新潟県' ),
	( 16, '富山県' ),
	( 17, '石川県' ),
	( 18, '福井県' ),
	( 19, '山梨県' ),
	( 20, '長野県' ),
	( 21, '岐阜県' ),
	( 22, '静岡県' ),
	( 23, '愛知県' ),
	( 24, '三重県' ),
	( 25, '滋賀県' ),
	( 26, '京都府' ),
	( 27, '大阪府' ),
	( 28, '兵庫県' ),
	( 29, '奈良県' ),
	( 30, '和歌山県' ),
	( 31, '鳥取県' ),
	( 32, '島根県' ),
	( 33, '岡山県' ),
	( 34, '広島県' ),
	( 35, '山口県' ),
	( 36, '徳島県' ),
	( 37, '香川県' ),
	( 38, '愛媛県' ),
	( 39, '高知県' ),
	( 40, '福岡県' ),
	( 41, '佐賀県' ),
	( 42, '長崎県' ),
	( 43, '熊本県' ),
	( 44, '大分県' ),
	( 45, '宮崎県' ),
	( 46, '鹿児島県' ),
	( 47, '沖縄県' );
SET IDENTITY_INSERT Prefecture OFF;

上手くクエリが流れました。

 

 

 

レコードの確認

ASP.Net Core MVC スキャフォールディング scaffold

問題なさそうですね。

  • テーブルを先に作っておいて、スキャフォールディングでモデルを自動生成する。
  • モデルでテーブルのクラスを定義して、スキャフォールディングでテーブルを自動生成する

どちらもできる便利な機能であることがわかりました。

 

 

続きは書籍で

WEB API, WPF, Xamarinなどクライアントを選ばないアプリケーション作成のテクニックがぎゅぎゅっと紹介されています。必読!

 

お疲れ様です。

最新情報をチェックしよう!
>システム構築・保守に特化した会社です。

システム構築・保守に特化した会社です。

システムの構築・保守運用「システムガーディアン」 社内システム担当が欲しいが、専属で雇うほどの仕事量はない。 必要な時に必要なだけ頼りたいというお悩みを持つ企業様へ専門知識を持って対応を行っております。 サーバから各種システムまで自社・他社で構築されたシステムに対してサポートを行っております。

CTR IMG