![](/img/trans.png)
[英]System.ObjectDisposedException when trying to list an object
[英]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.