38

重複の可能性:
Entity Framework4-AddObjectとAttach

特にモデルを操作するときに、アタッチの使用を数回見ました。

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

コンテキストからはUPDATE、EntityFrameworksのレコードに対して実行されているように見えますが、DELETEステートメントでも使用されていることがわかります。だから私はそれがデータベースへのポインタを取得するだけだと仮定することができますか?

誰かが私を正しい方向に向けることができますか、私はしばらくの間それをグーグルで検索しました、そして私が空になっていない間、私はそれが何をするかについての良い説明を見つけることができません(概要から、そして内部的に)。

4

1 に答える 1

59

興味のあるポイントとして、あなたが投稿したコードは何もしません

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

これは、エンティティを追跡グラフにアタッチするだけで、エンティティに変更を加えずに保存します。

アタッチ前にオブジェクトに加えられた変更は、保存時に無視されます

もっと興味深いのは、それが実際にプロパティを更新したかどうかです。

using (var context = new MyEntities())
{
    context.Attach(client);
    client.Name = "Bob";
    context.SaveChanges();
}
于 2012-07-29T12:44:08.347 に答える