1

我首先使用 EF 模型,在我的Employee班级中,我有一个Manager与自身具有 1 对 1 关系的属性,即Employee班级:

public partial class Employee
{
    public Employee()
    {          
    }

    public int Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }

    public virtual Employee Manager { get; set; }
}

现在,当我从数据库中获取现有对象并更改管理器时:

employee.Manager = otherEmployeeInstance;
Context.Entry(employee).State = System.Data.EntityState.Modified;
Context.SaveChanges();

它工作得很好;但是,如果我想删除经理,这将不起作用:

employee.Manager = null;

在我看来,我首先需要将经理(员工)实例“加载”到上下文中,因为这使它工作:

var dummyVar = employee.Manager.Id;
employee.Manager = null;

所以问题是,删除相关对象的最佳(正确)方法是什么?

4

1 回答 1

2

显然,当你想删除一个一对一关系的实体时,EF 不允许在没有事先准备的情况下删除它。也就是说,从该实体中删除任何依赖实体信息。请记住,我们使用的是关系数据库系统,任何没有任何协调的破坏关系都会导致异常和失败。当你想删除一个关系时,你可以在你的控制器上使用它:

employee.Remove(Manager);//Automatically Removes Navigational Properties at both entities
db.SaveChanges();

而不是这个:

employee.Manager = null;
于 2012-12-09T04:43:38.513 回答