public DbCommand GetDbCommand()
        {
            int contentId;
            var siteId = 0;

            if (ContentId != 0)
            {
                contentId = ContentId;
            }
            else
            {
                siteId = DbConnector.GetSiteId(SiteName);
                if (siteId == 0)
                {
                    throw new ApplicationException($"Site '{SiteName}' is not found");
                }

                contentId = DbConnector.GetContentId(DbConnector.GetSiteId(SiteName), ContentName);
                if (contentId == 0)
                {
                    throw new ApplicationException($"Content '{SiteName}.{ContentName}' is not found");
                }
            }

            var select = GetSqlCommandSelect(contentId);
            var from   = GetSqlCommandFrom(contentId);

            if (UseSecurity)
            {
                from = from.Replace(InsertKey, DbConnector.GetSecuritySql(contentId, UserId, GroupId, StartLevel, EndLevel));
            }

            var cmd = DbConnector.CreateDbCommand();

            var where = GetSqlCommandWhere(siteId, cmd);
            var orderBy = GetSqlCommandOrderBy();
            var startRow = StartRowExpression <= 0 ? 1 : StartRowExpression;
            var endRow = new long[] { 0, int.MaxValue, int.MaxValue - 1 }.Contains(PageSizeExpression) ? 0 : startRow + PageSizeExpression - 1;

            CountSql = $"SELECT cast(COUNT(*) as bigint) FROM {from} WHERE {where}";

            var sb = new StringBuilder();



            sb.AppendLine($@"SELECT {select} FROM {from} WHERE {where} ORDER BY {orderBy}");
            if (endRow > 0 || startRow > 1)
            {
                cmd.Parameters.AddWithValue("@startRow", startRow - 1);
                if (endRow != int.MaxValue)
                {
                    cmd.Parameters.AddWithValue("@endRow", endRow);
                    sb.AppendLine(DbConnector.DatabaseType == DatabaseType.SqlServer ?
                                  @"OFFSET @startRow ROWS FETCH NEXT @endRow - @startRow ROWS ONLY" :
                                  @"LIMIT @endRow - @startRow OFFSET @startRow"
                                  );
                }
                else
                {
                    if (startRow > 1)
                    {
                        sb.AppendLine(DbConnector.DatabaseType == DatabaseType.SqlServer ?
                                      @"OFFSET @startRow ROWS" : @"OFFSET @startRow"
                                      );
                    }
                }
            }



            if (Parameters != null)
            {
                foreach (var param in Parameters)
                {
                    cmd.Parameters.Add(param);
                }
            }

            cmd.CommandText = sb.ToString();

            return(cmd);
        }