MENU

1. Databaseの作成

目次

背景と目的

練習用Webアプリ作成企画の進捗報告(1回目)です。
今回は仕様のうち、1に関連する部分に着手しました。

  1. 選手やコーチ、球団スタッフの情報を管理したい。

CreateDbブランチが今回の作業内容にあたるため、そちらをクローンしつつ、見て頂ければと思います。

行ったこと

アプリのデータベースの作成と選手やコーチ、球団スタッフに関連するテーブルを作成しました。

手順

EntityFrameworkを用いて、CodeFirstで作成しました。

STEP
モデルクラスの作成

ひとまず、User, Player, Coach, Staffクラスについて、必要なプロパティを書き出していき、それらをモデルクラスとして実装しました。

主なモデルクラスとプロパティ

User

Use this system.

  • UserId
  • UserCode
  • Number
  • CoachID
  • StaffID
  • Mail
  • 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
STEP
パッケージのインストール

migrationとupdate-databaseをするために、下記3つのパッケージをインストールしました。

パッケージ一覧
  • Microsoft.EntityFrameworkCore ver 7.0.13
  • Microsoft.EntityFrameworkCore.SqlServer 7.0.13
  • Microsoft.EntityFrameworkCore.Tools 7.0.13
STEP
おまじないの記述
DbContextクラス

テーブルを作成したいクラスについて、DbSetクラスを定義します。
ここでは省略しますが、作成するテーブルの数だけ書きます。

 public DbSet<Coach> coaches { get; set; }
appsettings.json

その名の通り、アプリの設定をするJSON形式のファイルです。接続するデータベースの情報を記述します。

"AllowedHosts": "*",
"ConnectionStrings": {
  "DefalutConnection": " Server=(localDB)\\MSSQLLocalDB; Database = WOB; Trusted_Connection= True;"
}
STEP
データベース作成

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; }

まとめ

今回はユーザー関連のデータベースを作成しました。
特に問題という問題は発生しておらず、どしどしこれからも進めていこうと思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

CAPTCHA


目次