我想定义经常性的构图关系。如果从系统中删除了老板,则通过级联更新删除所有下属。
我的意思是:
我应该如何在代码中说明它?
public class Person{
public int Id {get;set;}
public virtual Person Person {get;set}
}
这可能在实体框架中吗?
答案 0 :(得分:1)
据我所知,它没有在任何地方记录,但实体框架只创建/更新/删除已加载的实体。
因此,如果您加载Person
并将其删除,那么如果此Person
有下属,您将收到外键违规错误。 EF不会自动更新这些子记录(将其FK设置为null)。
但是,如果您加载Person
和其下属并删除Person
,则EF会取消每个孩子的外键。
为了使这种加载更容易,您应该稍微修改Person
类:
public class Person
{
public int Id { get; set; }
public virtual Person Boss { get; set; }
[InverseProperty("Boss")] // Use one FK field for Boss and Subordinates
public virtual ICollection<Person> Subordinates { get; set; }
}
现在您可以加载Person
和Include()
Subordinates
。
顺便说一句,您无法指定级联删除/更新规则,因为Sql Server不接受循环级联路径。