static void Main(string[] args) { var mongoClient = new MongoClient(); var bookCtx = new BookContext(mongoClient); /* var query = new Queries(bookCtx); query.DisplayTotal(); query.DisplayByAuthor("Ann Beattie"); query.DisplayByPublicationYear(2005); var genAuth = new GenerateAuthors(new AuthorContext(mongoClient), bookCtx); genAuth.StartGeneration(); var bookCtxNew = new BookContextNew(mongoClient); * */ var authCtx = new AuthorContext(mongoClient); /* var genNewBooks = new GenerateNewBooks(bookCtxNew, authCtx, bookCtx); genNewBooks.StartGeneration(); */ /* * Not a good option, too slow * Better let the Mongo driver to work instead var genNewBooks = new PGenerateNewBooks(); genNewBooks.StartGenerationParallel(); * */ Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }
private async void Read() { var mongoClient = new MongoClient(); var bookCtx = new BookContext(mongoClient); var authCtx = new AuthorContext(mongoClient); var books = bookCtx.QBooks.AsParallel(); var authors = authCtx.QAuthors.AsParallel(); books.ForAll(b => { var author = authors.FirstOrDefault(a => a.Name == b.Author); if (author != null) { b.Author = null; b.AuthorId = author.Id; NewBooks.Enqueue(b); } }); readFinished = true; }
public GenerateNewBooks(BookContextNew newBookCtx, AuthorContext autCtx, BookContext bookCtx) { this.newBookCtx = newBookCtx; this.autCtx = autCtx; this.bookCtx = bookCtx; }
static void Main(string[] args) { var bookCtx = new BookContext(); long count = 0; var books = new List<Book>(); Console.WriteLine("Loading Books ..."); var stopWatch = new Stopwatch(); stopWatch.Start(); foreach (var item in GetBookData()) { try { var book = new Book() { ISBN = item[0], Title = item[1], Author = item[2], PublicationYear = int.Parse(item[3]), Publisher = item[4], ImageUrlSmall = item[5], ImageUrlMedium = item[6], ImageUrlLarge = item[7], }; books.Add(book); count++; } catch (Exception) { Console.WriteLine("Error in line: {0}", count+1); } //Insert every 1,000 records if ((count % 1000) == 0) { bookCtx.Books.InsertMany(books); Console.WriteLine("Inserting: {0}", count); books = new List<Book>(); } } //Insert last if any if (books.Count > 0) { bookCtx.Books.InsertMany(books); Console.WriteLine("Inserting: {0}", count); books = null; } stopWatch.Stop(); Console.WriteLine("Finished!"); Console.WriteLine("Time elapsed: {0}", stopWatch.Elapsed); // Read some /* var books = Queryable.Where(bookCtx.Books.AsQueryable(), b => b.PageCount > 50); Console.WriteLine("Books with more than 50 pages: {0}", books.Count()); Console.WriteLine("First One: {0}", books.FirstOrDefault().Title); Console.ReadKey(); */ }
public Queries(BookContext ctx) { bookCtx = ctx; }
public GenerateAuthors(AuthorContext autCtx, BookContext bookCtx) { this.autCtx = autCtx; this.bookCtx = bookCtx; }