实体框架中的外键关系

本文关键字:关系 框架 实体 | 更新日期: 2023-09-27 18:05:07

我是实体框架的新手。我有两张桌子…

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?

实体框架中的外键关系

如果我理解你的问题和你想做什么。我认为您应该将foreignkey属性添加到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);