private void StartDownloadChapter() { Thread.Sleep(300); var tasks = new List <Task>(); for (var i = 0; i < ChapterDownloadTaskLimit; i++) { var task = Task.Factory.StartNew(() => { using (var _db = new NsContext()) { var exit = -1; // 当它变为2时,退出无限循环 while (exit < 1) { try { var chapter = _chapterDownloadQueue.Dequeue(); var chapterInDb = _db.Chapters.SingleOrDefault( c => c.NovelId == chapter.NovelId && chapter.TitleWithNoSpace == c.TitleWithNoSpace); if (chapterInDb == null) { var content = _novelSpider.GetChapterContent(chapter.Url); var length = content.ComputeWordCount(); chapter.Content = content; chapter.WordCount = length; chapter.UpdateTime = DateTime.Now; _db.Chapters.Add(chapter); _db.SaveChanges(); } Thread.Sleep(5); } catch (InvalidOperationException ex) { exit++; Thread.Sleep(3000); } catch (Exception ex) { Thread.Sleep(50); } } } }); tasks.Add(task); } Task.WaitAll(tasks.ToArray()); }
private Novel UpdateDatabase(int typeId, Novel novel) { var lockObj = new object(); using (var _db = new NsContext()) { lock (lockObj) { // 保存作者信息 var authorName = novel.Author.Name.RemoveSpace().RemoveHtmlTags().RemovePunctuations(); var author = _db.Authors.SingleOrDefault(a => a.Name.Equals(authorName)); if (author == null) { novel.Author = _db.Authors.Add(novel.Author); _db.SaveChanges(); } else { novel.Author = author; } novel.AuthorId = novel.Author.Id; // 若为新小说则插入数据库 var novelInDb = _db.Novels.SingleOrDefault(n => n.AuthorId == novel.AuthorId && n.Name == novel.Name); if (novelInDb == null) { novel.UpdateTime = DateTime.Now; novel = _db.Novels.Add(novel); _db.SaveChanges(); } else { novel = novelInDb; } // 建立小说与分类的关联关系 var relate = _db.NovelTypeRelate.SingleOrDefault(r => r.NovelTypeId == typeId && r.NovelId == novel.Id); if (relate == null) { _db.NovelTypeRelate.Add(new NovelTypeRelate { NovelTypeId = typeId, NovelId = novel.Id, UpdateTime = DateTime.Now }); _db.SaveChanges(); } } } return(novel); }
private void UpdateNovelTypes(List <string> typesList) { using (var _db = new NsContext()) { var typesInDb = _db.NovelTypes.Where(t => t.IsDelete == false).Select(t => t.TypeName); var typesToInsert = typesList.Except(typesInDb); typesToInsert.ForEach(t => { _db.NovelTypes.Add(new NovelType { AddTime = DateTime.Now, TypeName = t }); }); _db.SaveChanges(); TypeList = _db.NovelTypes.Where(t => t.IsDelete == false).ToList(); } }
public GenericProuctServices(NsContext databaseNsContext) { _databaseNsContext = databaseNsContext; }
public WeekServices(NsContext databaseNsContext) { _databaseNsContext = databaseNsContext; }
public MealsController(NsContext context) { _context = context; }
public MealServices(NsContext databaseNsContext) { _databaseNsContext = databaseNsContext; }
public IngredientsController(NsContext context) { _context = context; }
public GenericProductsController(NsContext context) { _context = context; }
public WeeksController(NsContext context, IWeekServices service) { _context = context; _service = service; }
public IngredientSerices(NsContext databaseNsContext) { _databaseNsContext = databaseNsContext; }