In EntityFramework Core programming, You can get a DbContext object from a DbSet object like this:
using System; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Infrastructure; using Microsoft.EntityFrameworkCore.Internal; public static class DbContextGetter { public static DbContext GetDbContext<T>(this DbSet<T> dbSet) where T: class { var infrastructure = dbSet as IInfrastructure<IServiceProvider>; var serviceProvider = infrastructure.Instance; var currentDbContext = serviceProvider.GetService(typeof(ICurrentDbContext)) as ICurrentDbContext; return currentDbContext.Context; } } // How to use: // // class MyDbContext { // public DbSet<FooBar> FooBar { get; set; } // } // ... // var myContext = new MyDbContext(); // var contextFromDbSet = myContext.FooBar.GetDbContext(); // ~~~~~~~~~~~~~~ // myContext == contextFromDbSet; // -> true
Happy coding :)
Top comments (0)