public void Run() { var testLimit = 1000000; var pubs = GetPublishers().Take(testLimit); _c.AddRange(pubs); _c.SaveChanges(); var authors = GetAuthors().Take(testLimit); _c.AddRange(authors); _c.SaveChanges(); IEnumerable <Subject> subjects = GetSubjects().Take(testLimit); _c.AddRange(subjects); _c.SaveChanges(); SeedCategories(); pubs = _c.Query <Publisher>().ToList(); authors = _c.Query <Author>().ToList(); subjects = _c.Query <Subject>().ToList(); var cats = _c.Query <Category>().ToList(); IEnumerable <Book> books = GetBooks(pubs, authors, cats, subjects).Take(testLimit); foreach (var b in books) { try { _c.Add(b); _c.SaveChanges(); } catch (DbEntityValidationException e) { _log.Error("Could not save book {0}, reason: {1}", b.Title, e.Message); foreach (var eve in e.EntityValidationErrors) { _log.Error("Entity of type \"{0}\" in state \"{1}\" has the following validation errors:", eve.Entry.Entity.GetType().Name, eve.Entry.State); foreach (var ve in eve.ValidationErrors) { _log.Error("- Property: \"{0}\", Error: \"{1}\"", ve.PropertyName, ve.ErrorMessage); } } _c.LocalClear <Book>(); } catch (Exception ex) { _log.Error("Could not save book {0}, reason: {1}", b.Title, ex.Message); } } }
public IEnumerable <Book> GetMostRecentBooks(int size) { return(db.Query <Book>().OrderByDescending(b => b.CreationDate).Take(size)); }
// GET: Books public ActionResult Index(string sortOrder, string currentFilter, string bookCategory, string serie, string searchString, int?page, bool noPaging = false) { ViewBag.CurrentSort = sortOrder; /* * ViewBag.NameSortParm = String.IsNullOrEmpty(sortOrder) ? "name_desc" : "name"; * ViewBag.AuthorSortParm = String.IsNullOrEmpty(sortOrder) ? "author_desc" : "author"; * ViewBag.PublisherSortParm = String.IsNullOrEmpty(sortOrder) ? "publisher_desc" : "publisher"; * ViewBag.YearSortParm = String.IsNullOrEmpty(sortOrder) ? "year_desc" : "year"; * ViewBag.CategorySortParm = String.IsNullOrEmpty(sortOrder) ? "category_desc" : "category"; * ViewBag.SerieSortParm = String.IsNullOrEmpty(sortOrder) ? "serie_desc" : "serie"; * * if (!String.IsNullOrEmpty(sortOrder) && sortOrder.Contains("_")) * { * string[] sort = sortOrder.ToLowerInvariant().Split(new [] { '_' }); * * if (sort[0].Equals("name")) * { * ViewBag.NameSortParm = sort[1].Equals("desc") ? "name_desc" : "name_asc"; * } * else if (sort[0].Equals("author")) * { * ViewBag.AuthorSortParm = sort[1].Equals("desc") ? "author_desc" : "author_asc"; * } * } * else * { * // default sort on name * sortOrder = "name_asc"; * } */ if (searchString != null) { page = 1; } else { searchString = currentFilter; } ViewBag.CurrentFilter = searchString; var books = _db.Query <Book>(); if (!string.IsNullOrEmpty(searchString)) { books = books.Where(s => s.Title.Contains(searchString) || s.AlternativeTitle.Contains(searchString) || s.Authors.Count(a => a.Lastname.Contains(searchString)) > 0); } if (!string.IsNullOrEmpty(bookCategory)) { books = books.Where(x => x.Category.Title == bookCategory); } if (!string.IsNullOrEmpty(serie)) { books = books.Where(x => x.Serie == serie); } switch (sortOrder) { case "name_desc": books = books.OrderByDescending(s => s.Title); break; case "publisher_asc": books = books.OrderBy(s => s.Publisher.Name); break; case "publisher_desc": books = books.OrderByDescending(s => s.Publisher.Name); break; /*case "author_asc": * books = books.OrderBy(s => s.MainAuthor); * break; * case "author_desc": * books = books.OrderByDescending(s => s.MainAuthor); * break;*/ case "category_asc": books = books.OrderBy(s => s.Category.Title); break; case "category_desc": books = books.OrderByDescending(s => s.Category.Title); break; case "year_asc": books = books.OrderBy(s => s.ActualPrintYear); break; case "year_desc": books = books.OrderByDescending(s => s.ActualPrintYear); break; case "serie_asc": books = books.OrderBy(s => s.Serie); break; case "serie_desc": books = books.OrderByDescending(s => s.Serie); break; default: // Default Name ascending books = books.OrderBy(s => s.Title); break; } // Eager load authors, categories and publishers books.Include(a => a.Authors); books.Include(a => a.Category); books.Include(a => a.Publisher); AddCategoriesForDropDownFilter(); AddSerieForDropDownFilter(); int pageSize = 20; int pageNumber = (page ?? 1); return(View(books.ToPagedList(pageNumber, pageSize))); }