系统.当试图访问DataContext时,ObjectDisposedException异常.<



我试图使用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();
}

DB Context是这样注入的:

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'.

请问有人能帮忙吗?提前谢谢。

删除存储库中的静态内容。这是一个bug。你必须在你的启动中添加DI,像这样

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

否则你必须手动创建

private DataContext _context= new DataContext();

相关内容

  • 没有找到相关文章