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)