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



我在其中有一个带有.NET Core 2.2微服务的Azure Fabric群集。上述服务使用EF Core与Azure SQL数据库进行通信。另外,织物簇在负载平衡器后面。

数据库上下文具有范围固定的寿命,并使用依赖注入将其注入控制器。

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

问题是,是否有可能以某种方式缓存EF核心模型,以便每次发生上述情况都必须重建它?

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

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

如果出于性能原因需要模型缓存,则需要使用EF6。好消息是EF 6.3和EF 6的SQL Server提供商已移植到.NET Core 3.0上运行。但是,其他提供商可能会或可能不会将其代码放在上面,因此支持可能很斑点。

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

最新更新