2014年11月24日 星期一

Entity Framework Code First 一對一關聯設定


在兩個類別之間,各自包含一個引用屬性,就會被當成一對一關系
只是那張是主資料表,需要利用Fluent API來設定

主資料表
using System.ComponentModel.DataAnnotations;

public partial class TableA
{
    [Key]
    public int TabId { get; set; }

    public int C1 { get; set; }

    public virtual TableB TableB { get; set; }
}

對應的資料表
using System.ComponentModel.DataAnnotations;

public partial class TableB
{
    [Key]
    public int TabId { get; set; }

    public int CC1 { get; set; }

    public virtual TableA TableA { get; set; }
}

設定關聯
using System.Data.Entity;

public partial class DemoContext : DbContext
{
    public DemoContext()
        : base("name=DemoContext")
    {
    }

    public virtual DbSet<TableA> TableA { get; set; }
    public virtual DbSet<TableB> TableB { get; set; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<TableA>()
            .HasOptional(x => x.TableB)
            .WithRequired(x => x.TableA);
    }
}

建立出一對一關系的資料表


關聯圖