Entity Framework Code First 一對一關聯設定

Nov 24, 2014

1 min read

在兩個類別之間,各自包含一個引用屬性,就會被當成一對一關系 只是那張是主資料表,需要利用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);
}

}

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

[![](http://2.bp.blogspot.com/-rbt4EUaTb5Q/VHL9dejT89I/AAAAAAAABwI/QiNQmRhMIfo/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png)](http://2.bp.blogspot.com/-rbt4EUaTb5Q/VHL9dejT89I/AAAAAAAABwI/QiNQmRhMIfo/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png)

關聯圖

[![](http://3.bp.blogspot.com/-4NfXgZRL470/VHL_AJYWIvI/AAAAAAAABwU/0OA1cJHzG5s/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png)](http://3.bp.blogspot.com/-4NfXgZRL470/VHL_AJYWIvI/AAAAAAAABwU/0OA1cJHzG5s/s1600/%E6%9C%AA%E5%91%BD%E5%90%8D.png)

Sharing is caring!