背景と目的
練習用Webアプリ作成企画の進捗報告(1回目)です。
今回は仕様のうち、1に関連する部分に着手しました。
- 選手やコーチ、球団スタッフの情報を管理したい。
CreateDbブランチが今回の作業内容にあたるため、そちらをクローンしつつ、見て頂ければと思います。
行ったこと
アプリのデータベースの作成と選手やコーチ、球団スタッフに関連するテーブルを作成しました。
手順
EntityFrameworkを用いて、CodeFirstで作成しました。
ひとまず、User, Player, Coach, Staffクラスについて、必要なプロパティを書き出していき、それらをモデルクラスとして実装しました。
主なモデルクラスとプロパティ
User
Use this system.
- UserId
- UserCode
- Number
- CoachID
- StaffID
- Password
- Tel
Player
Player.
- Number
- FirstName
- LastName
- Height
- Weight
- Status
Coach
Assistant coach and head coach.
- CoachID
- FirstName
- LastName
- Post
Staff
Team doctor, private coach, club staff.
- StaffID
- FirstName
- LastName
- Post
migrationとupdate-databaseをするために、下記3つのパッケージをインストールしました。
パッケージ一覧
- Microsoft.EntityFrameworkCore ver 7.0.13
- Microsoft.EntityFrameworkCore.SqlServer 7.0.13
- Microsoft.EntityFrameworkCore.Tools 7.0.13
DbContextクラス
テーブルを作成したいクラスについて、DbSetクラスを定義します。
ここでは省略しますが、作成するテーブルの数だけ書きます。
public DbSet<Coach> coaches { get; set; }
appsettings.json
その名の通り、アプリの設定をするJSON形式のファイルです。接続するデータベースの情報を記述します。
"AllowedHosts": "*",
"ConnectionStrings": {
"DefalutConnection": " Server=(localDB)\\MSSQLLocalDB; Database = WOB; Trusted_Connection= True;"
}
Step1 ~ Step3までで、Model側の準備は完了しました。ここで、データベースへの同期を行います。パッケージマネージャーコンソールから、add-migrationを行います。
add-migration "CreateDbver1"
Migrationファイルが作成されたことを確認すると、データベースの更新を行います。
update-database
ちなみに、作成したMigrationファイルが気に入らなかった場合は、いつでも前の状態に戻すことができます。こちらに記載しているので、よければ見てください。
結果
アプリのデータベースとユーザーに関連するテーブルを作成することができました。
つまったこと・気づいたこと
外部キーとして指定する際、プロパティ名を一致する必要がないことです。
以下の場合、UserCode上では、主キーをIdとしていますが、User上では、Idではなく、UserCodeIdでも正常に動作します。なんとなく、名前は一致していたほうが良い気がしていましたが、その必要はなかったみたいです。
public class UserCode
{
[Key]
public int Id { get; set; }
public string Code { get; set; }
}
public class User
{
[Key]
public int UserId { get; set; }
[ForeignKey("UserCode")]
public int UserCodeId { get; set; }
まとめ
今回はユーザー関連のデータベースを作成しました。
特に問題という問題は発生しておらず、どしどしこれからも進めていこうと思います。
コメント