コード例 #1
0
        protected override Expression VisitQuerySourceReferenceExpression(QuerySourceReferenceExpression expression)
        {
            var qs = expression.ReferencedQuerySource;

            if (Query.CanQueryInMemory)
            {
                if (ProcessedSources.Contains(qs))
                {
                    return(expression);
                }
                ProcessedSources.Add(qs);
                if (Query.ParentQuery.MainFrom.Equals(qs))
                {
                    return(expression);
                }
            }
            if (typeof(IOracleReader).IsAssignableFrom(qs.ItemType))
            {
                //TODO: expand query
                Query.AddSelectPart(qs, "\"{0}\"".With(qs.ItemName), qs.ItemName, qs.ItemType, null);
            }
            else if (qs.ItemType.AsValue())
            {
                Query.AddSelectPart(qs, "VALUE(\"{0}\") AS \"{0}\"".With(qs.ItemName), qs.ItemName, qs.ItemType, null);
            }
            else
            {
                Query.AddSelectPart(qs, "\"{0}\"".With(qs.ItemName), qs.ItemName, qs.ItemType, null);
            }

            return(expression);
        }
コード例 #2
0
        protected override Expression VisitQuerySourceReferenceExpression(QuerySourceReferenceExpression expression)
        {
            var qs = expression.ReferencedQuerySource;

            if (Query.CanQueryInMemory)
            {
                if (ProcessedSources.Contains(qs))
                {
                    return(expression);
                }
                ProcessedSources.Add(qs);
                if (Query.ParentQuery.MainFrom.Equals(qs))
                {
                    return(expression);
                }
            }
            Query.AddSelectPart(qs, "\"{0}\"".With(qs.ItemName), qs.ItemName, qs.ItemType, null);

            return(expression);
        }