我正在开发一个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记录也会被删除
答案 0 :(得分:0)
你没有发布任何其他代码,但无论如何我都会猜测。最有可能的是,您正在同时加载孩子和父母。因此,孩子有父母的引用。如果您将其设置在其他地方,则可能需要检查这两者之间的FluentAPI(外键)关系,因为可能会设置该子项是父项。
您可以做的另一件事是在删除子项之前,只需将子项的Class1属性设置为null即可。这应该导致它不会自动将其包含在删除中。