Back to FAQs

Local Data in Entity Framework

The DbSet<TEntity>.Local provides access to the entity objects that are currently being tracked by the context and have not been marked as Deleted. It keeps track of entities whose entity state is added, modified and unchanged. Consider the following example:

using System.Data.Entity;

class Program
{
    static void  Main(string[] args)
    {
        using (var ctx = new SchoolDBEntities())
        {
            // load all students
            ctx.Students.Load();

            ctx.Students.Add(new Student() { StudentName = "New Student" });
                
            var std1 = ctx.Students.Find(1); // find student whose id = 1
            ctx.Students.Remove(std1);// remove student whose id = 1
                
            var std2 = ctx.Students.Find(2); // find student whose id = 1
            std2.StudentName = "Modified Name";
                
            // Loop over the students in context's local.
            Console.WriteLine("In Local: ");
            foreach (var student in ctx.Students.Local)
            {
                Console.WriteLine("Found {0}: {1} with state {2}",
                                    student.StudentID, student.StudentName,
                                    ctx.Entry(student).State);
            }

            // Get all students from db.
            Console.WriteLine("\nIn DbSet query: ");
            foreach (var student in ctx.Students)
            {
                Console.WriteLine("Found {0}: {1} with state {2}",
                                    student.StudentID, student.StudentName,
                                    ctx.Entry(student).State);
            }
        }
    }
}
Output:
In Local :
Found 0: New Student with state Added
Found 2: Modified Name with state Modified
Found 3: Student3 with state Unchanged
In DbSet query:
Found 1: New Student with state Deleted
Found 2: Modified Name with state Modified
Found 3: Student3 with state Unchanged

As you can see in the above output, local keeps track of entities whose state is Added, Modified or Unchanged where as DbSet collection contains all the entities whose state is Deleted, Modified or Unchanged.

Visit MSDN for more information on Local.