Example #1
0
        public virtual string Query(IQuery query)
        {
            try
            {
                StringBuilder str = new StringBuilder();
                IReadOnlyList <SingleEntityView> svList = _vv.VisitAlias(query.View);

                str.Append(_tr.Select);
                str.Append(_cb.BuildSelectColumns(query.View));
                str.Append(_tr.From);
                str.Append(_vv.BuildJoinClause(query.View));
                if (query.Criteria != null)
                {
                    str.Append(_tr.Where);
                    str.Append(_cv.BuildWhereFilters(query.Criteria, svList));
                }
                if (query.Order != null)
                {
                    str.Append(_tr.OrderBy);
                    str.Append(_ov.BuildOrderClause(query.Order, svList));
                }
                return(str.ToString());
            }
            catch (Exception ex)
            {
                throw ex.CreateWrapException <SQLGenerateException>();
            }
        }