実践 Entity Framework ~ リレーションシップを設定しよう(準備編)
Entity Framework で Code First Migrations。
前回までは、単一テーブルのみを取り扱ってきました。
ちなみに前回は...increment-i.hateblo.jp
今回からは、複数のテーブルを作成し、リレーションシップの設定方法などを見ていきます。
作成テーブル
次の3つのテーブルを作成することにします。
おさらいですが、利用するデータはこちらです。jusyo.jp
こんな感じにしたいです。
Prefectures テーブルは、過去に作成したものを利用します。
ほんじゃ、いきますか。
コードファーストでテーブルを作成
まずは、Municipalities テーブルと、TownAreas テーブルをサクッと作成します。コードファーストで。
Municipalities (地方自治体) テーブル
public class Municipality { [Key] [MaxLength(6)] public string Code { get; set; } [MaxLength(5)] public string PrefectureCode { get; set; } [MaxLength(20)] public string Name { get; set; } [MaxLength(40)] public string Kana { get; set; } }
TownArea (町域) テーブル
public class TownArea { [Key] [MaxLength(9)] public string Code { get; set; } [MaxLength(6)] public string MunicipalityCode { get; set; } [MaxLength(50)] public string Name { get; set; } [MaxLength(100)] public string Kana { get; set; } }
Entity に関してはこちら属性に関してはこちら
コンテキストクラスにアクセス用のプロパティを追加します。
public class AddressDataContext : System.Data.Entity.DbContext { public DbSet<Prefecture> Prefectures { get; set; } public DbSet<Municipality> Municipalities { get; set; } public DbSet<TownArea> TownAreas { get; set; } }
Add-Migration と Update-Database で、テーブルを作成できるわけですが...
今回作成したいのは、テーブル間で関連を持ったテーブル。いわゆる、リレーションシップが設定されているテーブルです。
それぞれ作成した後に、ちまちま設定しても良いわけですが、後々使える機能も考えて、コードファーストで設定したいところです。
Municipalities テーブルの PrefectureCode 及び TownArea テーブルの MunicipalityCode を、それぞれ外部キーとして設定したいのですが...続きはこちらで。