0

我是 Autofac 的新手,我将它用作依赖容器。我想注册我的数据库上下文。这就是我所做的

public static class AutofacConfig
    {
        public static void RegisterComponents()
        {
            var builder = new ContainerBuilder();

            builder.RegisterType<MyEntities>().As<IMyEntities>().SingleInstance().PreserveExistingDefaults();
            var container = builder.Build();

            GlobalConfiguration.Configuration.UseAutofacActivator(container);
            
            DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
        }
    }

但是在 .net Core 中,我需要将我的 DBContext 注册为Scoped. 在此处注册我的实体是否正确,SingleInstance或者我应该更改它?

4

1 回答 1

0

根据此处的 MS 文档, “DbContext 实例旨在用于单个工作单元。” 根据经验,我发现将 DBContext 注册为SingleInstance通常会导致难以重现异常,尤其是在多线程环境中。

我会考虑给它尽可能小的范围来实现一个工作单元,例如InstancePerLifetimeScope

于 2021-01-14T16:35:39.617 回答