Пример #1
0
        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());
        }
Пример #2
0
        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);
        }
Пример #3
0
        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();
            }
        }
Пример #4
0
 public GenericProuctServices(NsContext databaseNsContext)
 {
     _databaseNsContext = databaseNsContext;
 }
Пример #5
0
 public WeekServices(NsContext databaseNsContext)
 {
     _databaseNsContext = databaseNsContext;
 }
Пример #6
0
 public MealsController(NsContext context)
 {
     _context = context;
 }
Пример #7
0
 public MealServices(NsContext databaseNsContext)
 {
     _databaseNsContext = databaseNsContext;
 }
Пример #8
0
 public IngredientsController(NsContext context)
 {
     _context = context;
 }
Пример #9
0
 public GenericProductsController(NsContext context)
 {
     _context = context;
 }
Пример #10
0
 public WeeksController(NsContext context, IWeekServices service)
 {
     _context = context;
     _service = service;
 }
Пример #11
0
 public IngredientSerices(NsContext databaseNsContext)
 {
     _databaseNsContext = databaseNsContext;
 }