【问题标题】:core 3.1 error.Cannot access a disposed object. A common cause of this error is disposing a context that was resolved from dependency injection核心 3.1 错误。无法访问已处置的对象。此错误的一个常见原因是处理从依赖注入中解析的上下文
【发布时间】:2020-09-20 22:09:41
【问题描述】:

.Net Core 3.1

    `DBContext dbEntity;
    public CompanyService(DBContext _dbEntity)
    {
        dbEntity = _dbEntity;
    }
   `public async Task<string> Save(ModelCompany comp)
    {
                await dbEntity.Company.AddAsync(comp);
                await dbEntity.SaveChangesAsync(); 
                return "Saved";
    }

await dbEntity.SaveChangesAsync(); 部分插入数据时出错

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

如何解决。还需要在事务提交和回滚base上多添加一个表数据。如何在.net core 3.1上做到这一点

【问题讨论】:

  • 你是如何配置你的 DbContext 的?你能和我们分享一下吗?
  • public class DBContext:DbContext { public DBContext(DbContextOptions options) : base(options) { } protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { } protected override void OnModelCreating(ModelBuilder modelBuilder) { }公共 DbSet 公司 { 获取;放; } }

标签: asp.net-core .net-core .net-core-3.1 ef-core-3.1


【解决方案1】:

请确保您在启动时的上下文生命周期是单例而不是作用域。 (即 services.AddSingleton)

【讨论】:

    猜你喜欢
    • 2020-04-25
    • 2019-03-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-05-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多