示例#1
0
 public ActionResult Create(Setting setting)
 {
     if (ModelState.IsValid)
     {
         Novel novel = db.Novels.Find(setting.NovelId);
         setting.Novel = novel;
         db.Settings.Add(setting);
         db.SaveChanges();
         return(RedirectToAction("Index", "Home"));
     }
     return(PartialView(setting));
 }
        public ActionResult Create(Novel novel)
        {
            if (ModelState.IsValid)
            {
                novel.DateAccessed = DateTime.Now;
                db.Novels.Add(novel);
                db.SaveChanges();
                return(RedirectToAction("Index", "Home"));
            }

            return(PartialView(novel));
        }
        public ActionResult Create(Character character)
        {
            if (ModelState.IsValid)
            {
                Novel novel = db.Novels.Find(character.NovelId);
                character.Novel = novel;
                db.Characters.Add(character);
                db.SaveChanges();
                return(RedirectToAction("Index", "Home"));
            }

            return(PartialView(character));
        }
示例#4
0
        public tChapter GetChapter(int id)
        {
            using (var db = new NovelDbContext())
            {
                var chapter = db.tChapters.Where(s => s.ID == id).FirstOrDefault();
                if (chapter == null)
                {
                    return(null);
                }

                var novel  = db.tNovels.FirstOrDefault(s => s.ID == chapter.NovelID);
                var source = db.tSources.FirstOrDefault(s => s.ID == novel.SourceID);

                if (string.IsNullOrEmpty(chapter.Body))
                {
                    // 从资源服务器获取小说内容
                    // 保存到数据库

                    var body = new HtmlHelper(new Uri(chapter.SourceUrl)).GetSingleInnerTextByXPath(source.ChapterBodyXpath);

                    chapter.Body = body;
                    db.SaveChanges();
                }

                return(chapter);
            }
        }
示例#5
0
 public void AddNovel(tNovel novel)
 {
     using (var db = new NovelDbContext())
     {
         db.tNovels.Add(novel);
         db.SaveChanges();
     }
 }
示例#6
0
 public void AddSource(tSource source)
 {
     using (var db = new NovelDbContext())
     {
         db.tSources.Add(source);
         db.SaveChanges();
     }
 }
示例#7
0
 public int Save(TEntity model)
 {
     context.Add(model);
     context.SaveChanges();
     return(model.Id);
 }
示例#8
0
        /// <summary>
        /// 从小说服务器下载章节列表,保存到本地
        /// </summary>
        /// <param name="novelId"></param>
        /// <returns></returns>
        public void DownloadChapters(int novelId)
        {
            var novel = new NovelManager().GetNovel(novelId);

            var chapterNodes = GetChaptersHtmlFromNovelSource(novelId);

            var chapters = chapterNodes.Select(s => new tChapter()
            {
                Body          = null,
                ID            = 0,
                NovelID       = novelId,
                NextChapterID = null,
                PrevChapterID = null,
                SourceUrl     = s.GetAttributeValue("href", "#").ToString(),
                Title         = s.InnerText,
                Sort          = 0
            }).ToList();

            int?nextChapterId = 0;
            int?prevChapterId = 0;

            using (var db = new NovelDbContext())
            {
                db.tChapters.RemoveRange(db.tChapters.Where(s => s.NovelID == novelId));
                int pagesize  = 30;
                int pageindex = 0;
                while (pagesize * pageindex < chapters.Count())
                {
                    var items = chapters.Skip(pageindex * pagesize).Take(pagesize).ToList();

                    db.tChapters.AddRange(items);
                    db.SaveChanges();

                    pageindex++;
                }

                for (int i = 0; i < chapters.Count(); i++)
                {
                    if (i != 0)
                    {
                        prevChapterId = chapters.ElementAt(i - 1).ID;
                    }
                    else
                    {
                        prevChapterId = null;
                    }
                    if (i != chapters.Count() - 1)
                    {
                        nextChapterId = chapters.ElementAt(i + 1).ID;
                    }
                    else
                    {
                        nextChapterId = null;
                    }
                    chapters.ElementAt(i).NextChapterID = nextChapterId;
                    chapters.ElementAt(i).PrevChapterID = prevChapterId;
                    if (i % pagesize == pagesize - 1)
                    {
                        db.SaveChanges();
                    }
                }
                db.SaveChanges();
            }
        }