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被设置为'Added',如下图:

在此处输入图像描述

context.SaveChanges()被调用时,EF 4.0 继续并将记录插入到数据库中。请注意,Entity Framework 将代码转换为数据库可以理解的查询并处理所有数据交互和低级细节。还要注意在上面的代码中,我们正在以对象和属性的形式访问数据。

执行完代码后,您可以继续对数据库中的记录进行物理验证。

于 2012-12-13T20:13:46.987 回答