ASP.NET開発ド素人が「見積書・請求書作成システム」を作る第2回目となっております。
https://pctips.jp/server/aspnet-core-mvc-1/
前回は、作業者用マスターテーブルとWEB上での追加、編集、削除などができるサイトを「新規スキャフォールディングアイテム」をつかって自動でViewsにフォームを作成しました。
今回は、あと2つのマスターテーブルである、顧客マスターと商品マスターを作成してみたいと思います。
テーブル作成する流れ
第1回目でWoker_Masterというテーブルをデータベースに作成して、それをWEB上からデータを追加修正削除するまでをやりましたが、そこまでの流れをまとめておきます。
参考
(1)Modelsディレクトリ内に、クラス(テーブル名)を作成
※クラス名の頭文字は大文字にしないとマイグレーション時にエラーになるので注意。
(2)作成したクラス内にフィールド追加する
(3)新規スキャフォールディングアイテムの追加
(4)appsettings.jsonにてSqlServer接続情報等を設定
(5)マイグレーションする
2つのマスターテーブル作成
前回のマスターテーブルを作成した方法で、顧客マスター(Customor_Master)と商品マスター(Product_Master)を作成してみました。
まずは、Coutomor_masterのクラスを作成しました。
データの型を何にしていいのか?だったのでId以外は、stringにしちゃいまいた。
また、E-mailだとエラーがでるので、Emailというようにハイフンを削除しました。
namespace Quotation_Invoice.Models { public class Customor_Master { public int Id { get; set; } public string CompanyName { get; set; } public string Postal { get; set; } public string Address1 { get; set; } public string Address2 { get; set; } public string Name { get; set; } public string Phone { get; set; } public string Fax { get; set; } public string Email { get; set; } public string Remarks { get; set; } } }
そして、「新規スキャフォールディングアイテムの追加」を実行して、マイグレーションという流れですが、もう一つのテーブルも作成してしまおうかと思いProductr_masterのクラスもここを作成しました。
namespace Quotation_Invoice.Models { public class Product_Master { public int Id { get; set; } public string ProductName { get; set; } public string Code { get; set; } public string Item { get; set; } public int Price { get; set; } } }
そして、「新規スキャフォールディングアイテムの追加」を実行して、マイグレーションという流れです。
「ツール」>>「NuGetパッケージマネージャー」>>「パッケージマネージャーコンソール」と移動して、
Install-Package Microsoft.EntityFrameworkCore.Tools
Add-Migration Initial
Update-Database
もしかすると、既にWoker_Master作成時に、Install-Pakageの部分はやっているので必要ないのかもしれません。
Add-Migrationでエラー
「The name 'Initial' is used by an existing migration.」とうエラーがでました。
どうも、Initialって名前だと使えないよって言っているようです。
じゃ、Initial2にして再度マイグレーションをやったらできました。
つまり、Add-Migration Initialがコマンドのひとまとまりだと思い込んでいましたが、
ココに注意
Add-Migration ”マイグレーション名” って事でした!
デバッグの開始で動作確認
マイグレーションを実行した後、データベースのアップデートを実行すると、データベースにテーブルが作成されました。
動作確認の為と、ダミーのデータを入力するために、デバックの開始で試してみました。
https://pctips.jp/server/aspnet-core-mvc-3