我正在尝试使用ASP.NET MVC中的实体框架在层次结构关系中删除对父对象的引用。
假设我有以下实体:
[Table("person")]
public partial class Person
{
public Person()
{
this.Children = new HashSet<Person>();
}
[Key]
[Column("id")]
public int Id { get; set; }
[Column("name")]
public string Name { get; set; }
public virtual Person Parent { get; set; }
public virtual ICollection<Person> Children { get; set; }
}
具有以下映射:
modelBuilder.Entity<Person>()
.HasOptional<Person>(e => e.Parent)
.WithMany(e => e.Children)
.Map(e => e.MapKey("parent_id"))
.WillCascadeOnDelete(false);
Person
不需要Parent
,Person
也不需要Children
。
我想从Parent
中删除Person
。我尝试了以下无效的方法:
var person = _db.People.Find(personId);
person.Parent = null;
_db.Entry(person).State = System.Data.Entity.EntityState.Modified;
_db.SaveChanges();
父实体和子实体之间的关系仍然存在。
我在做错什么,如何删除孩子的父母?