Attach()在Entity Framework中究竟做了什么?

时间:2012-07-29 12:33:47

标签: c# entity-framework

  

可能重复:
  Entity Framework 4 - AddObject vs Attach

我已经看过使用附件几次,特别是在操纵模型时。

using (var context = new MyEntities())
{
    context.Attach(client);
    context.SaveChanges();
}

从上下文看起来它只是对EntityFrameworks中的记录运行UPDATE,但我也看到它在DELETE语句中使用。所以我只能假设它只是获取指向数据库的指针?

有人能指出我正确的方向吗,我用Google搜索了一段时间,虽然我没有空出来,但我找不到任何好的解释(从概述和内部) 。

1 个答案:

答案 0 :(得分:43)

正如您感兴趣的那样,您发布的代码无效

using (var context = new MyEntities())
{
    context.Attach(client);
    context.SaveChanges();
}

所有这一切都是将实体附加到跟踪图中,不对实体进行任何修改并保存。

在保存

中忽略对附加前对象所做的任何更改

更有意思的是,如果它实际更新了一个属性,即:

using (var context = new MyEntities())
{
    context.Attach(client);
    client.Name = "Bob";
    context.SaveChanges();
}