我有一个控制器:
private readonly ILogger _logger;
private readonly IRepository _repository;
public HomeController(ILogger logger, IRepository repository)
{
_logger = logger;
_repository = repository;
}
Run Code Online (Sandbox Code Playgroud)
这是存储库:
public class EfRepository : IRepository
{
// ...methods for add, delete, update entities
// ....
public void Dispose()
{
if (this._context != null)
{
this._context.SaveChanges();
(this._context as IDisposable).Dispose();
this._context = null;
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,IoC中的注册类型:
_builder.RegisterType<Logger>().As<ILogger>();
_builder.RegisterType<EfRepository>().As<IRepository>().WithParameter("context", new PcpContext());
Run Code Online (Sandbox Code Playgroud)
当我运行应用程序时,我收到此错误:
由于已经处理了DbContext,因此无法完成操作.
我试着改变注册EfRepository,如下所示:
_builder.RegisterType<EfRepository>()
.As<IRepository>()
.WithParameter("context", new PcpContext()).InstancePerLifetimeScope();
Run Code Online (Sandbox Code Playgroud)
在这种情况下,第一个请求完成,但在尝试打开其他页面时,我再次收到错误.问题出在哪儿?