首页 > 解决方案 > CaslteWindsor LifestyleScoped 在请求之间使用 SAME 实例

问题描述

项目是使用 CastleWindsor for IoC 的 ASP.NET

我已经像这样注册了继承 DBContext 的类

IoCcontainer.Register(Component.For<IMyContext>().ImplementedBy<MYContext>().LifestyleScoped())

我在 Startup.cs(ASP.net 的)中执行此操作。在方法中:ConfigureServices 我也调用

IoCcontainer.BeginScope();

用同样的方法。

但是当我运行应用程序并调用不同页面或同一页面两次时,我得到了相同的 MyContext 实例。我知道这是因为在 DbContect.[entity].Local; 我有以前的请求实体实例,我不应该有。

那么我应该在哪里打电话

IoCcontainer.BeginScope();

将范围缩小到单个请求?

我尝试过使用 Core DI

services.AddScoped<IMyContext, MyContext>()

但是我在同一个请求中为每个 Dao 类实例获得了不同的 MyContext 实例。

不介意知道如何配置 Core,以便所有 Dao 类实例使用相同的实例

问候

格雷格

标签: asp.net-coredependency-injectioncastle-windsor

解决方案


解决了 DBContext 多实例问题,即 dbContext 类所需的无参数构造函数


推荐阅读