public override async Task <Article> CreateArticle(string authedUsername, NewArticle newArticle)
        {
            var transaction = _context.Database.BeginTransaction();

            try
            {
                IdentityUser author = await _userManager.FindByNameAsync(authedUsername);

                String     authorId       = author.Id;
                ArticleDAO createdArticle = _articleRepository.CreateArticle(
                    title: newArticle.Title,
                    description: newArticle.Description,
                    body: newArticle.Body,
                    authorId: authorId);
                _context.SaveChanges();
                List <TagDAO> tags = _tagsRepository.SaveTags(newArticle.TagList);
                _context.SaveChanges();
                _articleTagsRepository.SaveArticleTags(tags.Select(e => e.Id).ToList(), createdArticle.Id);
                _context.SaveChanges();
                Article article = await CreateArticleFromDAO(createdArticle, authedUsername);

                transaction.Commit();
                return(article);
            } catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }