如何配置Autofac,以便在每次创建新的DbContext时都将其创建?

问题描述

我是Autofac的新手。我的program.cs文件中有我的注册信息:

var builder = new ContainerBuilder();
builder.RegisterLogger();
builder.RegisterType<GetUserFactory>().As<IGetUser>();
builder.RegisterType<MyContext>().InstancePerLifetimeScope();
builder.RegisterType<LoginForm>();
builder.RegisterType<RegisterForm>();
builder.RegisterType<MainFormView>().As<IMainFormView>().InstancePerLifetimeScope();
builder.RegisterType<MainFormPresenter>();
builder.RegisterType<TestForm>();
builder.RegisterType<PeopleReport>();
Container = builder.Build();

当我打开MainFormView时,它第一次正常运行。但是任何第二次尝试打开它或随后的尝试都表明我的MyContext已处置。

using (var mainFormView = Program.Container.Resolve<IMainFormView>())
{
    mainFormView.SetTag(Program.Container.Resolve<MainFormPresenter>());

    var form = (MainFormView)mainFormView;

    form.ShowDialog();
}

我的问题是我应该如何配置Autofac,以便为每个MyContext请求更新我的MainFormView

更新:

仔细查看我的错误消息后,我发现被处置的是我的MainFormView而不是MyContext而不是 from __future__ import print_function,unicode_literals from PyInquirer import prompt from pprint import pprint questions = [ { 'type': 'input','name': 'first_name','message': 'What\'s your first name',} ] answers = prompt(questions) pprint(answers)

解决方法

我看到你有:

builder.RegisterType<MyContext>()
  .InstancePerLifetimeScope();
       ^^^^^^^^^^^^^

通常不应将数据库上下文声明为具有生存期范围。 See alsoalso

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...