【发布时间】:2020-12-09 08:22:06
【问题描述】:
我有一个 ASP .Net Core 3.1 Web API。当 API 启动时,我希望它从数据库中读取几个查找表并将它们存储在某个地方。这些表包含很少更改的数据(标题、国家、语言等)。这些数据可能每隔几年更改一次。因此,我希望它们在启动时被读取和存储以提高性能,而不是每次我需要这些数据时都读取数据库。
我所做的是创建一个读取所有这些查找表的服务。然后,在服务的构造函数中,我调用服务中的一个方法,该方法从数据库中进行实际读取。然后我在 Startup.ConfigureServices() 中将此服务注册为 Singleton。
问题是读取数据库表的方法是异步的,构造函数不能是异步的(据我了解)。
目前,它正在工作 - 该方法在服务的构造函数中调用,然后立即返回,而数据库表的读取发生在一个单独的进程中。无论如何,实际读数只需要一两秒钟。然而,我不喜欢这样。可以运行另一个需要访问此查找数据的代码,但数据可能尚未准备好。理想情况下,我希望在执行任何其他代码之前完成对这些查找表的读取。此外,我在 VS 中得到一条绿色的摆动线,并对此发出警告:)
所以我不确定如何解决它。是否有在 .Net Core API 中启动时执行代码的最佳实践?
【问题讨论】:
标签: c# asp.net-core .net-core asp.net-core-webapi webapi