繁体   English   中英

System.ObjectDisposedException 尝试访问 DataContext 时

[英]System.ObjectDisposedException when trying to access DataContext

我正在尝试使用 DbContext 从存储库中获取一些数据。 出于某种原因,我不断收到 System.ObjectDisposedException。 在我的整个代码中,我没有处理任何内容,也没有在相关类中使用 using 语句。 这是抛出异常的方法示例,尽管此存储库中的所有方法都会发生这种情况。

public async Task<List<Unternm>> GetCompanyBaseDataAsync(List<int> companyKeys)
{
      return await _context.Set<Unternm>().Where(u => companyKeys.Contains(u.Baseid)).ToListAsync();
}

数据库上下文是这样注入的:

 public class MasterDataRepository : IMasterDataRepository
  {
    private readonly IMapper _mapper;
    private static IDataContext _context;
    public MasterDataRepository(IMapper mapper, IDataContext context)
    {
      _mapper = mapper;
      _context = context;
    }

这是我的数据上下文的样子:

  public class DataContext : DbContext, IDataContext
  {

    public DataContext(DbContextOptions options) : base(options)
    {
      
    }

    public DbSet<Arztlfd> Arztlfd { get; set; }
    public DbSet<Arztstam> Arztstam { get; set; }
    public DbSet<Oposten> Oposten { get; set; }
    public DbSet<Unternm> Unternehmen { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
      if (!optionsBuilder.IsConfigured)
       optionsBuilder.UseNpgsql(...);
    }

    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
     ...
    }

这是我得到的例外:

无法访问已处理的上下文实例。 此错误的一个常见原因是处理从依赖注入解析的上下文实例,然后尝试在应用程序的其他地方使用相同的上下文实例。 如果您在上下文实例上调用“Dispose”,或将其包装在 using 语句中,则可能会发生这种情况。 如果你使用依赖注入,你应该让依赖注入容器来处理上下文实例。 对象名称:'DataContext'。

请问有人可以帮忙吗? 提前致谢。

删除存储库中的静态。 这是一个错误。 您必须像这样将 DI 添加到您的启动中

services.AddDbContext<DataContext>(options => {
options.UseNpgsql(Configuration.GetConnectionString("DefaultConnection"));

否则你将不得不手动创建它

 private DataContext _context= new DataContext();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM