在单例服务的构造函数中访问dbcontext

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

场景: 在 blazor Web 程序集应用程序的服务器项目中:我有一项服务将利用数据库中的某些元数据。此元数据只会随着架构的更改而更改 - 而不是在正常应用程序执行期间。

我的目的是创建一个单例服务,可以从控制器调用该服务来访问此信息。我打算捕获此元数据一次,然后通过服务提供它。

我相信做到这一点的方法是使 dbcontext 在服务的构造函数中可用,捕获信息,然后销毁 dbccontext,因为服务中不再需要它。其他方法会将此元数据传递给调用者。

问题1:这种做法有意义吗?

基本逻辑是:

public ServiceConstructor()
{
Get copy of the dbcontext
Do some work using the dbcontext
destroy the dbcontext.
}

问题 2:如何从作用域服务中获取 dbcontext 的副本?在不将其作为参数传递给构造函数的情况下这样做是否有意义?

dependency-injection blazor singleton blazor-webassembly
1个回答
0
投票

我的方法是将数据缓存在单例服务中,但通过范围服务访问它。

第一个访问数据的范围服务发现它是空的,因此使用来自

DbContextFactory
的 DBContext 获取它。此后,任何进一步的作用域服务都会访问单例中缓存的数据。

我不会将

DbContext
传递给单例以供其使用。

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