弊社技術顧問の増田智明の著書紹介をかねた.Net Core MVCのチップスです。
.NET Coreを利用するとLinux、Windowsを問わずに動作するアプリケーションが作成出来ます。2章 “スキャフォールディングの利用”の一部を実際に行ってみます。
今回はコードで先にテーブル構造を定義して、スキャフォールディングでテーブルを設定していきます。前回とは手順が異なります。
前回
プロジェクトを作り直して始める。
appsettings.jsonの接続が私の環境と合ってないようで。前回そういえばこの部分に関して設定を触っていなかったですね。
サーバー名を確認します。
appsettings.jsonを書き換えます。
通りました(ㆁᴗㆁ✿)
テーブルの状態が現状こうなっていて、コードでモデルを修正して、スキャフォールディングでDBを変更します。
コードファーストなスキャフォールディング
Personクラスの設定
Prefectureクラスの設定
Modelsにクラスを作っておきます。
PowerShellでマイグレーションを実行します。
1 |
dotnet ef migrations add 定義名 |
1 |
dotnet ef database update |
Personテーブルの修正を確認。
コントローラの上書き
同名のコントローラを追加することで上書きを行います。
【Entity Frameworkを使用したビューがあるMVCコントローラ】を選択して【追加】を行います。
同名に設定します。
【はい】をクリックして上書きを行います。
【はい】をクリックします。
コントローラもビューも上書きされました。
IIS Expressを起動してビルドする
Personテーブルのテーブル構造の変更、Prefectureテーブルが作成されていることがわかります。
Prefectureテーブルにデータを入れてみる
IDENTITY_INSERT が OFF に設定されているときは、テーブル ‘Prefecture’ の ID 列に明示的な値を挿入できません。
何も考えずにINSERTをかけたらエラーが出ましたね~。
警告そのままにSET IDENTITY_INSERTをONにして、INSERTクエリが終わったらOFFで設定を戻しますよ!
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 48 49 |
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; |
上手くクエリが流れました。
レコードの確認
問題なさそうですね。
- テーブルを先に作っておいて、スキャフォールディングでモデルを自動生成する。
- モデルでテーブルのクラスを定義して、スキャフォールディングでテーブルを自動生成する
どちらもできる便利な機能であることがわかりました。
続きは書籍で
WEB API, WPF, Xamarinなどクライアントを選ばないアプリケーション作成のテクニックがぎゅぎゅっと紹介されています。必読!
お疲れ様です。