删除子记录会删除实体中的父记录

时间:2017-03-16 14:27:30

标签: c# asp.net entity-framework-6

我正在开发一个asp.net应用程序。我使用Entity框架来表示我的表。 我有一个带有两个外键的模型。其中一个似乎给我带来了麻烦,因为当我尝试从子模型中删除记录时,父项也会被删除。 这是我的模特:

public class Class1
{
    public Class1()
    {
        this.Children= new HashSet<Child>();
    }

    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public bool variable{ get; set; }

    [ForeignKey("Class0")]
    public long Class0_Id { get; set; }

    public virtual CLass0 CLass0{ get; set; }

    public virtual ICollection<Child> Children{ get; set; }
}

public class CHild
{
    [Key, DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public long Id { get; set; }

    public bool variable5{ get; set; }

    [ForeignKey("CLass1")]
    public long Class1_Id { get; set; }

    public virtual Class1 Class1{ get; set; }

    [ForeignKey("AnotherClass")]
    public long AnotherClass_Id { get; set; }

    public virtual AnotherClass AnotherClass{ get; set; }
}

我的问题是,当我尝试从Child类中删除记录时,相关的Class0记录也会被删除

1 个答案:

答案 0 :(得分:0)

你没有发布任何其他代码,但无论如何我都会猜测。最有可能的是,您正在同时加载孩子和父母。因此,孩子有父母的引用。如果您将其设置在其他地方,则可能需要检查这两者之间的FluentAPI(外键)关系,因为可能会设置该子项是父项。

您可以做的另一件事是在删除子项之前,只需将子项的Class1属性设置为null即可。这应该导致它不会自动将其包含在删除中。