我注意到这些方法经常结合使用:
context.Set<User>().Attach(user);
context.Entry(user).State = EntityState.Modified;
如果只能context.Entry(user)在需要更改状态时使用它,那么使用它有什么意义?
这将自动被调用context.Set<User>().Attach(user);,还是我弄错了?
我注意到这些方法经常结合使用:
context.Set<User>().Attach(user);
context.Entry(user).State = EntityState.Modified;
如果只能context.Entry(user)在需要更改状态时使用它,那么使用它有什么意义?
这将自动被调用context.Set<User>().Attach(user);,还是我弄错了?
我们打电话时有什么意义:
我们不仅将一个实体附加到
DbContext,我们还说一个实体是脏的。这将EF在发生更新时强制生成一个查询,该查询update将更新该实体中存在的所有字段,尽管事实上只有一个字段的值可能会更改。当我们打电话时:
我们只需将实体附加到
DbContext,而实体的属性State等于EntityState.Unchanged。这意味着如果其中一个字段发生更改,它将EF生成update一个仅更新该字段的查询。调用方法:
在我看来是多余的。
从这里
如果您有一个实体,您知道它已经在数据库中,但在此上下文中未跟踪此实体,那么您可以使用
Attach中的方法将其附加到此上下文DbSet。在这种情况下,该实体将具有状态Unchanged(未更改)。