【发布时间】:2018-12-16 19:19:09
【问题描述】:
我有一堆彼此相关的类。
我们以下面的类层次结构为例:
Class A
{
// PK
public string A_Id
// Navigation Property
public virtual ICollection<B> MyB{ get; set; }
}
Class B
{
// PK
public int B_Id
// FK - On Delete - NO ACTION <---------- Difference here
public string A_Id { get; set; }
// Navigation Properties
public virtual A MyA { get; set; }
public List<C> MyC{ get; set; }
}
Class C
{
// PK
public int C_Id
// FK - On Delete - CASCADE <---------- Difference here
public int B_Id { get; set; }
// Navigation Properties
public virtual B MyB { get; set; }
}
当我在 SQL Management Studio 中检查 FK 时,我看到 On delete cascade 是在 Class C 的 FK 上定义的,但不是在 Class B 的 FK 上强>。
此外,当我尝试删除 A 的一个实例时,我会得到不同的运行时异常,因为存在引用该实例的行。
为什么会这样?
我应该如何将它们都定义为 On Delete Cascade?p>
EF6 如何确定如何定义 FK??
我已经阅读了许多 SO 答案,但都没有成功。
我也尝试使用 Fluent API 定义 FK,但它只是创建了第二个 FK,而不是修改第一个。 =[
【问题讨论】:
标签: c# sql .net database entity-framework-6