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);
        }
Exemplo n.º 2
0
        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);
        }