2011-08-11 194 views
1

我是新來的實體框架。我有兩個表...實體框架中的外鍵關係

public class S7_Baskets 
{ 
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Column(Order = 0)] 
    public string S7_BasketID { get; set; } 
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Column(Order = 1)] 
    public int S7_Seqno { get; set; } 
    public int S7_ProductID { get; set; } 

    public virtual S2_Products S2_Product { get; set; } 

} 

public class S2_Products 
{ 
    [Key] 
    public int S2_ProductID { get; set; } 
    public string S2_Desc { get; set; } 
} 

的S7_ProductID應參考S2_ProductID?

+0

這是一個問題,那就是純粹是關於實體框架的代碼優先。它與MVC3沒什麼關係。您在MVC3項目中使用它的事實是無關緊要的。 –

+0

好的,我會改變 – Beginner

+0

我認爲這就是你在實體中定義的虛擬屬性所要做的。 – Novice

回答

1

如果我理解你的問題以及你正在嘗試做什麼。我想你想將ForiegnKey屬性添加到S7_ProductID屬性中。

如下所示:

public class S7_Baskets 
{ 
    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Column(Order = 0)] 
    public string S7_BasketID { get; set; } 

    [Required, Key, DatabaseGenerated(DatabaseGeneratedOption.None)] 
    [Column(Order = 1)] 
    public int S7_Seqno { get; set; } 

    [ForeignKey("S2_Products")] 
    public int S7_ProductID { get; set; } 
    public virtual S2_Products S2_Product { get; set; } 

}

您可能還需要添加類似模型的OnModelChange方法如下:

modelBuilder.Entity<S7_Baskets>() 
      .HasRequired(t => t.S2_Products) 
      .WithMany() 
      .HasForeignKey(t => t.S7_ProductID).WillCascadeOnDelete(false); 
+0

感謝這是[ForeignKey(「S2_Product」)]不是[ForeignKey(「S2_Products」)]沒有'我'認爲它的工作! – Beginner

+0

嘗試將屬性更改爲[ForiegnKey(「S2_Product」)]以匹配屬性名稱而不是實體名稱。 –

+0

糟糕。當我進入我的時候,我沒有看到你最後的評論。 –