【发布时间】:2021-12-10 22:13:37
【问题描述】:
有这个实体:
public class Basket
{
public int Id{ get; set; }
[ForeignKey("Apple")]
public int AppleId { get; set; }
public Apple Apple { get; set; }
[ForeignKey("Banana")]
public int BananaId { get; set; }
public Banana Banana { get; set; }
[ForeignKey("Cherry")]
public int CherryId { get; set; }
public Cherry Cherry { get; set; }
}
我这样命名它们只是为了给出一个具体的例子。
在“basket”表中,我将有 4 个不同的列,其中 3 个是“apple”、“banana”和“cherry”的 ID。我想设置一个 CASCADE DELETE 条件,如果这 3 个将被删除,那么行必须包含该 ID。
到目前为止,我无法完成它,因为“apple”、“banana”和“cherry”不包含“basket”的 ID。
谢谢。
【问题讨论】:
-
这没有意义。一对多关系的“一”端不需要(根据定义,不能)包含关系“多”端的主键以启用级联删除。
-
在这种情况下,“一”端应该是三个之一。 “篮子”是多头。并且这三个都不包含“多”端又名“篮子”的主键
-
这只是三个标准的一对多关系。 “one”端不能包含“many”端的 ID。
标签: .net entity-framework asp.net-core entity-framework-core