none
In Singleton AppclicationDBContext verwenden RRS feed

  • Frage

  • Hallo,

    ich versuche gerade eine Asp Core 1.0 auf 2.0 zu migrieren. Was früher scheinbar ging, ist jetzt nicht mehr möglich. Ich möchte in meinen ImportService Datenbankzugriff erhalten. 

    In 1.0 habe ich es so gemacht:

    services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("LocalConnection")));
    services.AddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    services.AddTransient<IDataStore, DataStore>();
    services.AddSingleton<IImportRepository, ImportRepository>();
    


     public class ImportRepository : IImportRepository
        {
            
            Importer Importer;
    
            private readonly ApplicationDbContext DBContext;
            private readonly IDataStore store;
            private ImportSet runningSet = null;
    
            public ImportRepository(ApplicationDbContext context, IDataStore store)
            {
                this.DBContext = context;
                this.store = store;
                Importer = new Importer(DBContext, store);
            }
    }


    Was damals wunderbar funktionierte.

    Doch jetzt mit Core 2.0 scheint das nicht mehr zu funktionieren. Es kommen immer Fehlermeldungen wie "Scroped kann nicht in Singelton" verwendet werden. Umgekehrt geht es genau so wenig.

    Ich habe auch folgenden Ansatz probiert.

    services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(Configuration.GetConnectionString("Database")));
    services.TryAddSingleton<IHttpContextAccessor, HttpContextAccessor>();
    services.AddSingleton<ImportService>(
                    provider => new ImportService((ApplicationDbContext)provider.GetService(typeof(ApplicationDbContext)))
                    );

    mit 

    public ImportService(ApplicationDbContext dbContext)
            {
                this.DB = dbContext;
            }

    In diesen Ansatz erhalte ich die Fehlermeldung "Cannot resolve scoped service 'Portal.Data.ApplicationDbContext' from root provider."

    Kann wer helfen?

    Donnerstag, 30. November 2017 10:49