有没有人幸运地使用Structuremap“正确”设置EF Core DBContext( 正确<?>)
DBContext在请求的生命周期内需要是一个单例。
我了解默认生命周期是 Transient 。我知道这将获得一个嵌套容器,这在web api / mvc下运行时实际上意味着“每个请求”? (see this)
但是,看看这段代码,dbcontext
不是应用程序生命周期单身人士吗?
public class DistributedTaskRegistry : Registry
{
public DistributedTaskRegistry()
{
For<DistributedTaskDbContext>().Use(() => new DistributedTaskDbContextFactory().CreateDbContext(null));
For<IDistributedTaskRepository>().Use<DistributedTaskRepository>();
}
}
NB 这是使用EF Core的“遗留”.Net Framework 4.7 Web Api
修改 HttpContextScoped
发生了什么?
答案 0 :(得分:0)
确认:默认生命周期为 transient ,StructureMap
表示 Per Request Lifetime 。
如果你想要一个应用程序生命周期 Singleton ,你需要指定它。
For<IDistributedTaskRepository>().Use<DistributedTaskRepository>().Singleton();