请按照以下方法:
public class User
{
[Key]
public Guid Id { get; set; }
public string Name { get; set; }
}
public class DataContext : DbContext
{
DbSet<User> Users { get; set; }
}
public class Repository
{
DataContext db = new DataContext();
public User Attach1(User entity)
{
var ent = db.Entry<User>(entity);
ent.State = EntityState.Modified;
if (db.SaveChanges() > 0)
return ent.Entity;
return null;
}
public User Attach2(User entity)
{
return db.Users.Attach(entity);
}
}
Attach1
和Attach2
之间有什么区别吗?
答案 0 :(得分:4)
您的Attach1
和Attach2
方法会执行不同的操作,但您不清楚这些方法的用途。将实体附加到EF时,它将被添加到Unchanged
状态的上下文中。如果您在附加后修改实体,那么EF将跟踪这些更改,实体将处于Modified
状态。
<强> Attach1 强>
此方法将附加实体并将其标记为已修改。因此,后续SaveChanges()
将更新实体的所有属性。建议不要在SaveChanges()
方法中调用Attach
,因为它不仅仅是附加。
<强> Attach2 强>
此方法会将实体附加为Unchanged
。