实体框架删除父对象关系

时间:2020-04-11 23:20:27

标签: asp.net-mvc entity-framework linq

我正在尝试使用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不需要ParentPerson也不需要Children

我想从Parent中删除Person。我尝试了以下无效的方法:

var person = _db.People.Find(personId);

person.Parent = null;

_db.Entry(person).State = System.Data.Entity.EntityState.Modified;
_db.SaveChanges();

父实体和子实体之间的关系仍然存在。

我在做错什么,如何删除孩子的父母?

0 个答案:

没有答案