【问题标题】:How to cache Entity Framework Core model?如何缓存 Entity Framework Core 模型?
【发布时间】:2020-03-05 00:35:47
【问题描述】:

我有一个 Azure 结构集群,其中包含 .NET core 2.2 微服务。上述服务使用 EF 核心与 Azure SQL 数据库进行通信。此外,结构集群位于负载均衡器后面。

数据库上下文有一个作用域生命周期,并使用依赖注入注入到控制器中。

当服务由同一客户端持续查询时,一切正常,因为负载平衡器保证至少 4 分钟内同一用户将被发送到同一服务实例。但是,当负载均衡器决定将用户发送到不同的实例时,会再次创建数据库上下文(因为生命周期是有范围的,这意味着每个新的 Web 请求都会创建一个上下文)。不幸的是,模型构建过程需要很长时间,因此第一个查询总是比后续查询慢得多(在同一个 Web 请求上)。

问题是,是否有可能以某种方式缓存 EF Core 模型,这样就不必在每次出现上述情况时都重新构建它?

我的意思是,与 EF 类似的过程 - 一次创建 .edmx 文件并在创建上下文时加载。

【问题讨论】:

    标签: .net-core entity-framework-core edmx


    【解决方案1】:

    截至 2020 年 3 月 3 日 https://github.com/dotnet/efcore/issues/1906 这仍然不可能。

    如果出于性能原因需要模型缓存,则需要使用 EF 6。好消息是 EF 6.3 和 EF 6 的 SQL Server 提供程序已移植到 .net core 3.0 上运行。然而,其他提供商可能会也可能不会移植他们的代码,因此支持可能参差不齐。

    https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/#what-s-new-in-ef-6-3

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-05-12
      • 2020-07-27
      • 1970-01-01
      • 2017-03-21
      • 1970-01-01
      相关资源
      最近更新 更多