2015-04-22 138 views
0

我正在使用數據註釋來擁有外鍵。 EF成功構建了一些列,但爲某些屬性添加了額外的列。 這裏是我的類:EF爲外鍵添加額外列

public class Class 
{ 
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Column(TypeName = "BIGINT")] 
    public Int64 LiIdH { get; set; } 

    [Column(TypeName = "BIGINT"), Index(IsUnique = true)] 
    public Int64 LiIdPeriod { get; set; } 
    public virtual ZPeriod ZPeriod { get; set; } 

    [Column(TypeName = "SMALLINT"), Index(IsUnique = true)] 
    public Int16 SWhCode { get; set; } 
    public virtual InvtWare InvtWare { get; set; } 
} 

我想有LiIdPeriodSWhCode爲外鍵。 EF將LiIdPeriod作爲外鍵添加,但對於SWhCode,它只是添加了一個名爲InvtWare_SWhCode的額外列。 我該如何解決這個問題並將SwhCode作爲外鍵?我更喜歡數據註釋和屬性流利的API。

+2

如果這是關於外鍵,爲什麼你不顯示你的外鍵表和描述關係? –

+0

這聽起來像一個更好的方法:) – Akbari

回答

2

您可以通過兩種不同的方式指定實體框架的外鍵。

  1. 使用數據註釋
  2. 使用流利API

使用數據註釋

[Column(TypeName = "SMALLINT"), Index(IsUnique = true)] 
public Int16 SWhCode { get; set; } 
[ForeignKey("SWhCode")] 
public virtual InvtWare InvtWare { get; set; } 

使用流利API

protected override void OnModelCreating(DbModelBuilder modelBuilder) 
{ 
    // Assuming one to many relationship 
    modelBuilder.Entity<Class>().HasRequired(d =>d.InvtWare).WithMany(d => d.Classes).HasForeignKey(d => d.SwhCode); 
}