如何修复“在上一个操作完成之前在此上下文中启动的第二个操作……”在使用依赖项注入时?
从数据库中读取数据时,我收到此错误:
在上一个操作完成之前,在此上下文中开始第二个操作。 任何实例成员都不保证是线程安全的。
我有以下ApplicationContext.cs:
public class ApplicationContext : Microsoft.EntityFrameworkCore.DbContext { public ApplicationContext(DbContextOptions options) : base(options) { } public DbSet MyClasses{ get; set; } }
以下ApplicationContextFactory.cs
public class ApplicationContextFactory : IDesignTimeDbContextFactory { public ApplicationContext CreateDbContext(string[] args) { var builder = new DbContextOptionsBuilder(); var connection = "myConnectionString"; builder.UseSqlServer(connection); return new ApplicationContext(builder.Options); } }
以下ServiceLoader.cs(我声明DI):
public static class ServiceLoader { public static void ConfigureServices(IServiceCollection services) { services.AddSingleton(); var connection = "myConnectionString"; services.AddDbContext(options => options.UseSqlServer(connection)); } }
最后,以下Repository抛出exception:
public class Repository : IRepository { private ApplicationContext _db; public Repository (ApplicationContext db) { _db = db; } public List Get() { _db.MyClasses.ToList(); } }
我还尝试将Repository声明为Transient而不是Singleton,但抛出了类似的错误
‘尝试在配置上下文时使用上下文。 DbContext实例不能在OnConfiguring内使用,因为此时仍在配置它。 如果在上一个操作完成之前在此上下文上启动第二个操作,则会发生这种情况。 任何实例成员都不能保证是线程安全的。
有关如何解决此问题的任何想法? 谢谢!