如何缓存实体框架核心模型?

问题描述 投票:1回答:1

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

数据库上下文具有一定范围的生存期,并使用依赖项注入将其注入到控制器中。

当同一客户端一致地查询服务时,一切工作都很好,因为负载平衡器保证至少有4分钟的时间,同一用户将被发送到同一服务实例。但是,当负载平衡器决定将用户发送到其他实例时,将再次创建数据库上下文(由于生存期是作用域的,这意味着将为每个新的Web请求创建一个上下文)。不幸的是,模型构建过程花费了相当长的时间,由于这个原因,第一个查询总是比随后的查询(在同一Web请求上)要慢得多。

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

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

.net-core entity-framework-core edmx
1个回答
0
投票

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

如果出于性能原因需要模型缓存,则需要使用EF6。已将EF 6.3移植到.net核心3.0以及EF 6的SQL Server提供程序上。https://devblogs.microsoft.com/dotnet/announcing-ef-core-3-0-and-ef-6-3-general-availability/#what-s-new-in-ef-6-3

© www.soinside.com 2019 - 2024. All rights reserved.