可以将表FK链接到实体框架中的其他2个PK吗?

时间:2019-03-07 12:21:20

标签: entity-framework model-view-controller ef-code-first-mapping

我有一个购物车,可以从两个单独的桌子中接收物品。

一个表包含单个项目,另一个表包含多个项目的框。

我正在使用ApiController将商品插入购物车,问题是当我插入ID为1的Box时,购物车中的FK会将ID更新为1,但没有指示它是Item还是Box

我试图在购物车表中为每个商品和商品ID设置多个FK,但是代码首先给出了有关FK中空值的错误。我曾尝试使它们为可为空,但这会在尝试联接表进行数据检索时导致错误。

以下所示的关系的最佳做法是什么?

enter image description here

购物车型号:

  public class Cart
  {
    [Key]
    public int RecordID { get; set; }
    public string CartID { get; set; }
    public int ItemID { get; set; }
    public int BoxID { get; set; }
    public int Qty { get; set; }
    public System.DateTime DateCreated { get; set; }

    public Item Item{ get; set; }
    public Box Box { get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }
}

1 个答案:

答案 0 :(得分:1)

为什么不将box视为单独的项目,结果将只有一个表而不是两个表。

例如。

public class Cart
{
    [Key]
    public int RecordID { get; set; }
    public string CartID { get; set; }
    public int ItemID { get; set; }
    public int Qty { get; set; }
    public System.DateTime DateCreated { get; set; }

    public Item Item{ get; set; }

    public string UserID { get; set; }
    public ApplicationUser User { get; set; }
}
public class Item
{
    [Key]
    public int ItemID { get; set; }
    .
    .
    .
}

在这种情况下,您将能够为单个项目和框项目分配不同的ID。

如果框中的项目相同,也可以使用“数量”属性。