2

おそらくこの質問は以前に答えられたことがあります。もしそうなら、皆さんが私を正しい方向に向けてくれれば幸いです。

新しいオブジェクトがEntityFrameworkコレクションに追加されたときに何が起こるか知りたいです。

もっと正確に言えば、新しいオブジェクトを追加するために、コレクション全体がメモリにロードされるかどうかを知りたいのですが

例えば:

public class MyContext : DbContext
{
    public DbSet<Assignment> Assignments { get; set; }
}

public class SomeClass
{
    public void AddAssignment(Assignment assignment)
    {
        var ctx = new MyContext();

        ctx.Assignments.Add(assignment);

        ctx.SaveChanges();
    }
}

単純な挿入を実行するためだけに、すべての割り当てレコードをメモリにロードする必要がありますか?

4

1 に答える 1

5

つまり、エンティティコレクション全体のロードプロセスはありません。

このAddObject()メソッドは、データベースに存在しない新しく作成されたオブジェクトを追加するために使用されます。がAddObject()呼び出されると、以下に示すように、一時EntityKeyが生成され、EntityStateが「追加」に設定されます。

ここに画像の説明を入力してください

context.SaveChanges()呼び出されると、EF 4.0が先に進み、レコードをデータベースに挿入します。Entity Frameworkは、コードをデータベースが理解するクエリに変換し、すべてのデータの相互作用と低レベルの詳細を処理することに注意してください。また、上記のコードでは、オブジェクトおよびプロパティとしてデータにアクセスしていることに注意してください。

コードを実行した後、先に進んでデータベース内のレコードを物理的に検証できます。

于 2012-12-13T20:13:46.987 に答える