大家好。 我对这两个命令有疑问。 当Attach方法存在时,我们在哪里被迫使用Update方法呢? 感谢您解释两者之间的区别
例如
public void UpdateStudent(Student student)
{
var student = _context.Students.FirstOrDefault(s => s.Id == student.Id);
student.FullName = student.FullName;
student.Age = student.Age;
context.Students.Update(student); //or context.Students.Attach(student) ?
context.SaveChanges();
}
Attach 开始跟踪给定实体以及可从给定实体访问的条目,但即使您的对象与数据库中的对象不同,其状态也会开始为
Unchanged
。
更新将执行相同的操作,但以
Modified
状态开始。
var entity = context.Students.Attach(student);
entity.State = EntityState.Modified;
与
相同context.Students.Update(student);
在您的示例中,如果您在进行更改后附加,则
SaveChanges
调用不会导致任何更改保存到数据库中,因为附加后未进行任何更改。您必须附加,然后进行更改。