Entity framework core 在EntityFrameworkCore中,如何获得DBContext中已加载的所有对象的列表

Entity framework core 在EntityFrameworkCore中,如何获得DBContext中已加载的所有对象的列表,entity-framework-core,entity-framework-core-3.0,Entity Framework Core,Entity Framework Core 3.0,如果我做这样的事 其中(x=>x.SomeGuid.ToString()==“00000000-0000-0000-0000-1234000001234”) 然后加载的实体不是我想要的。我想知道,已经加载了哪些实体 注意:我想要一个已经加载的所有实体的列表,而不仅仅是一个特定的实体 评论中的链接问题回答了问题的第二部分,因此我现在删除了该问题,以避免有人在评论中搜索 MyClass a = (from x in DBcontext.ChangeTracker.Entries() where x.

如果我做这样的事

其中(x=>x.SomeGuid.ToString()==“00000000-0000-0000-0000-1234000001234”)

然后加载的实体不是我想要的。我想知道,已经加载了哪些实体

注意:我想要一个已经加载的所有实体的列表,而不仅仅是一个特定的实体


评论中的链接问题回答了问题的第二部分,因此我现在删除了该问题,以避免有人在评论中搜索

MyClass a = (from x in DBcontext.ChangeTracker.Entries() where x.Entity is MyClass && ((MyClass)x.Entity).TheGuid == theGuid select (MyClass)x.Entity).FirstOrDefault();

可能是重复的为什么你一开始就想要它?DbContext是一个临时对象,您知道加载了哪些对象,因为加载它们的方法与使用(var context=new MyContext())子句放入
的方法相同。即使在MVC控制器中,对象也是在同一操作中加载的,纯粹是为了调试EF Core本身吗?这是检查已加载内容的唯一原因。如果需要,您可以选中cn DbContext.ChangeTracker并使用以获取跟踪条目列表。如果您真的想要,您可以检查其本身正在使用的跟踪条目,该跟踪条目使用的是另一个内部类等。这可以通过DI和EF核心测试注册其自己的伪状态管理器来解决