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

Joh*_*ell 34 c# entity-framework

可能重复:
实体框架4 - AddObject与Attach

我已经看过连接几次使用,特别是在操作模型时.

using (var context = new MyEntities())
{
    context.Attach(client);
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

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

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

Not*_*ple 51

就像您感兴趣的那样,您发布的代码什么也没做

using (var context = new MyEntities())
{
    context.Attach(client);
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

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

在保存中忽略在附加之前对对象所做的任何更改

更有趣的是它是否实际更新了一个属性,即:

using (var context = new MyEntities())
{
    context.Attach(client);
    client.Name = "Bob";
    context.SaveChanges();
}
Run Code Online (Sandbox Code Playgroud)

  • @JohnMitchell附加现有实体后,可以将其更改状态设置为modified,例如`context.Entry(client).State = EntityState.Modified; ` (19认同)