实体框架6 CF:删除一对多

时间:2015-07-31 08:39:14

标签: c# entity-framework sql-server-ce

我的课程类似于:

public class Contact
{
    public string Name { get; set; }
    public virtual ICollection<Person> Persons { get; set; }
    [Key]
    public int Id { get; set; }
}

public class Person
{
    public string Name { get; set; }
    public virtual Contact Contact { get; set; }
    public int? ContactId { get; set; }
    [Key]
    public int Id { get; set; }
}

当我尝试删除Contact中包含Person的{​​{1}}时,我收到此错误:

  

无法删除主键值,因为引用了此键   仍然存在。 [外键约束名称=   FK_dbo.Persons_dbo.Contacts_ContactsId]

我将ContactId设置为int?,因此它可以为空,并且数据库说它是可以为空的FK,并且它通常可以正常工作。就在我尝试删除带有集合的实体时,我得到了这个错误。

我希望能够删除联系人,但不能删除其中的人员,我该怎么办?

1 个答案:

答案 0 :(得分:2)

EF的默认行为是在删除主要关系时使外键为空。但是,不会设置数据库规则。为了使EF能够在依赖者的外键上发出更新语句,需要将它们加载到上下文中 因此,请确保在删除所有已依赖Contact个实体的Person时删除它。