我有一个购物车,可以从两个单独的桌子中接收物品。
一个表包含单个项目,另一个表包含多个项目的框。
我正在使用ApiController将商品插入购物车,问题是当我插入ID为1的Box时,购物车中的FK会将ID更新为1,但没有指示它是Item还是Box
我试图在购物车表中为每个商品和商品ID设置多个FK,但是代码首先给出了有关FK中空值的错误。我曾尝试使它们为可为空,但这会在尝试联接表进行数据检索时导致错误。
以下所示的关系的最佳做法是什么?
购物车型号:
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; }
}
答案 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。
如果框中的项目相同,也可以使用“数量”属性。