Example #1
0
        public virtual IEnumerable <T> GetResultList(Expression expression)
        {
            var visitor = new QueryTranslationVisitor(new QueryAnalysisContext(entityContext._InternalServices.TypeTranslationUtil)
            {
                ModifyProjection = true
            });
            var translationResults = visitor.GetTranslatedResults(expression);

            var tableEntityQuery = translationResults.AnalysisContext.RootEntityQuery.TableEntityQuery
                                   .Provider.CreateQuery(translationResults.TranslatedExpression);

            if (TypesUtil.IsPrimitiveDataType(typeof(T)))
            {
                return(tableEntityQuery as IEnumerable <T>);
            }
            else
            {
                var tableEntities = new List <object>();
                foreach (object o in tableEntityQuery)
                {
                    tableEntities.Add(o);
                }

                return(MakeResultList(tableEntities, translationResults.AnalysisContext.QueryableType.NonPrimitiveEnumerableItemType));
            }
        }
Example #2
0
        public virtual T GetResult(Expression expression)
        {
            var visitor = new QueryTranslationVisitor(new QueryAnalysisContext(entityContext._InternalServices.TypeTranslationUtil)
            {
                ModifyProjection = true
            });
            var translationResults = visitor.GetTranslatedResults(expression);

            var tableEntityQuery = translationResults.AnalysisContext.RootEntityQuery.TableEntityQuery;
            var tableEntity      = tableEntityQuery.Provider.Execute(translationResults.TranslatedExpression);

            if (TypesUtil.IsPrimitiveDataType(typeof(T)))
            {
                return((T)tableEntity);
            }
            else
            {
                return(MakeResult(tableEntity, translationResults.AnalysisContext.QueryableType));
            }
        }