インクリメンタルなカイハツにっき

.NET 開発手法を中心に、これから始める方の一助となる記事を載せていく予定です。

実践 Entity Framework ~ Id 列の作成

Entity Framework で Code First Migrations。

前回、コードでテーブルエンティティを作成してみましたが、実テーブルの差癖性に失敗してしまいました。キーの定義がないということでしたので、今回はそのキー列を作成してみましょう。

キーの定義方法はいくつかありますが・・・とりあえず、キーとなる列を新しく作成してみます。

Id プロパティ

Prefecture クラスに、新しく int 型の Id プロパティを定義します。

public int Id { get; set; }

Idプロパティを追加

とりあえず、これで出来ます。
論より証拠ですね。もう一度挑戦してみましょう。

Add-Migration CreatePrefecture

Add-Migration

おっ!
赤い文字でなくなって、なんかうまくいったっぽいですね。

Migrations フォルダの中に、新しく次のようなコードを持つクラスが作成されています。

Migration class

詳細は置いておいて、どんどん進めます。
実際にこれをデータベースに適用させます。

Update-Database

Update-Database

エラーが出ることもなく、無事にできたみたいですねー。
データベースを確認してみると・・・

Prefecture Table

Prefectures テーブルができています。
前回にもちょろっと説明していますが、単数形名称のクラス名に対して、複数形名称のテーブルが作成されます。

そして、フィールドも定義したプロパティと同じものができています。
さて、問題の Id ですが・・・ちゃんと PK(Primary Key) として作成されてますね。この Id 列は Identity となり、自動連番となります。

問題あり?

じゃ、これでいっか・・・とはいかないでしょう。残念ながら。
このテーブルに Id 列は大げさすぎるでしょう。コードとキーは別にするという考えもわからなくもないですが、今のところ変更される見込みもない都道府県であれば、都道府県コードとなる Code フィールドがキーとなるのではないでしょうか?

Id 以外の列をキーとしたい場合はどうするのでしょうか?
次回は、作ってみたけど、『あっ!間違えたから戻したい!』そんなときの対処方法を紹介します。

続きはこちら・・・