为什么EF不会将EntityState显示为已添加到内存中的新实体?

时间:2015-11-15 09:59:31

标签: c# entity-framework

请参阅以下代码段:

using (var entities = new SchoolDBEntities())
        {
            ////entities.Students.Add(new Student() { StudentID = 5, StudentName = "New Student1" });
            Student newStudent = entities.Students.Create();
            newStudent.StudentID = 5;
            newStudent.StudentName = "New Student1";
            entities.Students.Add(newStudent);

            Student studentToRemove =  entities.Students.Find(1);
            entities.Students.Remove(studentToRemove);

            // Perform a query against the database.
            Console.WriteLine("\nIn DbSet query: ");
            foreach (var student in entities.Students)
            {
                Console.WriteLine("Found {0}: {1} with state {2}",
                                  student.StudentID, student.StudentName,
                                  entities.Entry(student).State);
            }
        }

注意:尚未调用SaveChanges。

问题 -

  1. 在输出控制台上,我没有看到状态为已添加的新实体“New Student1”。为什么?
  2. 如果DBSet仅显示数据库中的数据,为什么删除学生的内存中更改会显示在状态为已删除的控制台中?
  3. 谢谢!

1 个答案:

答案 0 :(得分:1)

因为还没有SaveChanges。您可以使用Local属性:

foreach (var student in entities.Students.Local)