【问题标题】:Entity framework initialization cache实体框架初始化缓存
【发布时间】:2018-03-08 23:22:35
【问题描述】:

这是我从未找到答案的问题。我们通常必须在任何给定时间创建几个 DbContext 实例,这是否意味着 DbContext 将不得不一次又一次地验证所有实体/映射,或者对于给定的流程/应用程序域,验证只发生一次?

如果每次都发生,我们是否可以强制它缓存模型定义(POCOS)?

【问题讨论】:

  • 这应该只在您启动 AppDomain 时发生,而不是在您创建上下文的新实例时发生。否则性能会很糟糕

标签: .net entity-framework entity-framework-6


【解决方案1】:

是的。

每次运行应用程序时,默认的 Database Initalizer Strategie (CreateDatabaseIfNotExists) 都会运行,并在数据库和模型之间进行比较。

其他 Database Initalizer 类型的行为相同。

如果您确信模型符合数据库状态

您可以通过将 DbInitalizer 设置为 null 来获得性能和充电时间:

 Database.SetInitializer<YourDbContext>(null);

【讨论】:

  • 感谢您的回复,但这并不是我真正要问的。这实际上是我每次都在做的事情,以及禁用迁移等,但问题不止于此。我们可能会使用 fluent 或 attributes 来定义模型的外观,我猜 EF 会检查该模型以查看它是否有效,即使它没有触及真正的底层数据库,这也是我真正想知道的。这种模型验证(pocos)是否每次都会发生?再次感谢您的回复。
  • 啊。但它为什么困扰着你?你在乎什么?
  • 好吧,那里可能会有性能损失,即使它仍然很小。如果模型的结构在进程运行时没有改变,我只是想知道为什么模型本身的结构没有被缓存。
猜你喜欢
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-13
  • 1970-01-01
  • 1970-01-01
  • 2014-11-22
相关资源
最近更新 更多