public override async Task <CommentPaging> GetCommentsAsync(Screams.Scream scream, int index, int size)
        {
            if (scream == null || scream.Model == null)
            {
                throw new NullReferenceException("scream of model can't be null");
            }
            var paging = CommentPaging.Create(index, size);

            Expression <Func <ScreamBackend.DB.Tables.Comment, bool> > whereStatement =
                comment => comment.ScreamId == scream.Model.Id && !comment.Hidden;

            paging.List = await _db.Comments.AsNoTracking()
                          .OrderByDescending(c => c.CreateDateTime)
                          .Where(whereStatement)
                          .Skip(paging.Skip)
                          .Take(paging.Size)
                          .Include(c => c.Author)
                          .Select(c => new CommentPaging.Comment
            {
                Id          = c.Id,
                AuthorId    = c.AuthorId,
                Author      = c.Author.Username,
                Content     = c.Content,
                HiddenCount = c.HiddenCount,
                DateTime    = c.CreateDateTime.ToShortDateString()
            })
                          .ToListAsync();

            paging.TotalSize = await _db.Comments.CountAsync(whereStatement);

            return(paging);
        }
 public abstract Task <CommentPaging> GetCommentsAsync(Screams.Scream scream, int index, int size);