【问题标题】:In entity framework core, how you get a list of all objects ALREADY loaded in DBContext在实体框架核心中,如何获取已加载到 DBContext 中的所有对象的列表
【发布时间】:2019-10-31 15:46:39
【问题描述】:

如果我这样做

DBcontext.MyTable.Where(x => x.SomeGuid.ToString() == "00000000-0000-0000-0000-1234000001234");

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

NB 我想要一个所有已加载实体的列表,而不仅仅是一个特定的。

评论中的链接问题回答了这个问题的第二部分,所以我现在删除了它

【问题讨论】:

  • 你为什么首先想要那个? DbContext 是一个瞬态对象,您知道加载了哪些对象,因为您以与using(var context=new MyContext()) 子句相同的方法加载它们。即使在 MVC 控制器中,对象也以相同的操作加载
  • 纯调试
  • 您是否在调试 EF Core 本身?这是要检查已加载内容的唯一原因。如果需要,可以查看 DbContext.ChangeTracker 并使用ChangeTracker.Entries() 获取跟踪条目列表。
  • 如果你真的想要你可以检查DbContext.IDbContextDependencies.StateManager,它本身是an internal class using ,它使用另一个内部类等。这可以通过DI和EF解决核心测试注册他们自己的假状态管理器

标签: entity-framework-core entity-framework-core-3.0


【解决方案1】:

为了拯救在 cmets 中狩猎的人

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-06-15
    • 2022-11-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-07-22
    • 1970-01-01
    相关资源
    最近更新 更多