结构图 - 依赖注入 - 每个请求的EF Core DBContext生存期

时间:2018-01-10 09:58:35

标签: asp.net-web-api dependency-injection entity-framework-core structuremap

有没有人幸运地使用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发生了什么?

1 个答案:

答案 0 :(得分:0)

确认:默认生命周期为 transient StructureMap表示 Per Request Lifetime

如果你想要一个应用程序生命周期 Singleton ,你需要指定它。

For<IDistributedTaskRepository>().Use<DistributedTaskRepository>().Singleton();