gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 20:40:06 25 4
gpt4 key购买 nike

请引用以下代码片段:

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 仅显示数据库中的数据,为什么删除学生的内存中更改在控制台中显示为已删除状态

谢谢!

最佳答案

那是因为 entities.Students 只返回当前存在于数据库中的实体。

如果您列出当前跟踪的实体......

foreach (Student student in entities.ChangeTracker.Entries().Select(e => e.Entity))
{
Console.WriteLine("Found {0}: {1} with state {2}",
student.StudentID, student.StudentName,
entities.Entry(student).State);
}

...您还会看到新实体。

顺便说一句,entities.Students.Local 显示当前在本地“可见”的所有实体。它显示新学生,但不显示已删除的学生。

关于c# - 为什么 EF 不将 EntityState 显示为添加到内存中的新实体?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33718444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com