Update 和 Attach 的区别(EF Core)

问题描述 投票:0回答:1

大家好。 我对这两个命令有疑问。 当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();
}

c# sql-server entity-framework entity-framework-core
1个回答
0
投票

Attach 开始跟踪给定实体以及可从给定实体访问的条目,但即使您的对象与数据库中的对象不同,其状态也会开始为

Unchanged

更新将执行相同的操作,但以

Modified
状态开始。

var entity = context.Students.Attach(student);
entity.State = EntityState.Modified;

相同
context.Students.Update(student);

在您的示例中,如果您在进行更改后附加,则

SaveChanges
调用不会导致任何更改保存到数据库中,因为附加后未进行任何更改。您必须附加,然后进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.