2011-08-11 156 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

糟糕。当我进入我的时候,我没有看到你最后的评论。 –