private static DbContext GetDbContext(this IQueryable queryable) { DbContext dbContext; try { object internalQuery = ReflectionFunctions.GetReflectedMember(queryable, "InternalQuery"); object internalContext = ReflectionFunctions.GetReflectedMember(internalQuery, "_internalContext"); dbContext = (DbContext)ReflectionFunctions.GetReflectedMember(internalContext, "Owner"); } catch (Exception e) { throw new ApplicationException("Unable to retreive db context from IQueryable", e); } return(dbContext); }
public static DbContext GetDbContext <TEntity>(this DbSet <TEntity> dbSet) where TEntity : class { try { object internalSet = ReflectionFunctions.GetReflectedMember(dbSet, "_internalSet"); object internalContext = internalSet .GetType() .BaseType .GetField("_internalContext", BindingFlags.NonPublic | BindingFlags.Instance) .GetValue(internalSet); return((DbContext)ReflectionFunctions.GetReflectedMember(internalContext, "Owner")); } catch (Exception e) { throw new ApplicationException("Unable to retreive db context from DbSet", e); } }
internal static ObjectQuery GetObjectQuery(this IQueryable query) { object internalQueryField = ReflectionFunctions.GetReflectedMember(query, "_internalQuery"); return(ReflectionFunctions.GetReflectedMember(internalQueryField, "_objectQuery") as ObjectQuery); }