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

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

実践 Entity Framework ~ リレーションシップを設定しよう(準備編)

Entity Framework で Code First Migrations。

前回までは、単一テーブルのみを取り扱ってきました。
ちなみに前回は...increment-i.hateblo.jp

今回からは、複数のテーブルを作成し、リレーションシップの設定方法などを見ていきます。

作成テーブル

次の3つのテーブルを作成することにします。

  • Prefectures(都道府県テーブル)
  • Municipalities(地方自治体テーブル)
  • TownAreaas(町域テーブル)

おさらいですが、利用するデータはこちらです。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 を、それぞれ外部キーとして設定したいのですが...続きはこちらで。