【发布时间】:2021-12-11 20:47:15
【问题描述】:
我正在尝试使用 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'。
请问有人可以帮忙吗? 提前致谢。
【问题讨论】:
-
DbContext注入了吗?你从哪里调用你的GetCompanyBaseDataAsync方法? -
我正在从这样的服务调用方法:var result = await _masterDataRepository.GetCompanyBaseDataAsync(companyKeys);
标签: c# .net-core repository datacontext objectdisposedexception