public static void AddBook(XmlNodeList authors, XmlNodeList reviews, string title, string webSite, decimal price, string isbn) { if (title == null) { throw new ArgumentNullException("BookTitle must not be null"); } BookStoreDB context = new BookStoreDB(); Book newBook = new Book(); foreach (XmlNode author in authors) { string authorName = author.InnerText; newBook.Authors.Add(CreateOrLoadAuthor(context, authorName)); } foreach (XmlNode review in reviews) { string authorName = null; XmlAttributeCollection atributes = review.Attributes; string reviewText = review.InnerText.Trim(); if (review.Attributes.GetNamedItem("author") != null) { authorName = review.Attributes.GetNamedItem("author").Value; } string date = ""; if (review.Attributes.GetNamedItem("date") != null) { date = review.Attributes["date"].Value; } DateTime parsed; string dateFormat = "d-MMM-yyyy"; DateTime.TryParseExact(date, dateFormat, CultureInfo.InvariantCulture, DateTimeStyles.None, out parsed); newBook.Reviews.Add(CreateReview(context, parsed, authorName, reviewText)); } newBook.Title = title; newBook.Website = webSite; newBook.Price = price; newBook.Isbn = isbn; context.Books.Add(newBook); context.SaveChanges(); }
// Task 1 - 2 are in Code First aproach and I em using DataAnotattions Atributes for adding constraints public static void AddBook(string author, string title, string webSite, decimal price, string isbn) { if (author == null || title == null) { throw new ArgumentNullException("BookTitle and BookAuthor(s) must not be null"); } BookStoreDB context = new BookStoreDB(); Book newBook = new Book(); newBook.Authors.Add(CreateOrLoadAuthor(context, author)); newBook.Title = title; newBook.Website = webSite; newBook.Price = price; newBook.Isbn = isbn; context.Books.Add(newBook); context.SaveChanges(); }
private static void CreateAndAddBookInDb( BookStoreDBEntities db, string author, string title, string isbn, decimal price, string webSite) { ICollection<Author> bookAuthors = new List<Author>(); // Check is title exist var titleInDb = (from bookDb in db.Books where bookDb.BookTitle == title select bookDb).FirstOrDefault(); var authorInDb = (from authorDb in db.Authors where authorDb.AuthorName == author select authorDb).FirstOrDefault(); if (titleInDb != null && authorInDb != null) { return; } if (authorInDb == null) { Author newAuthor = new Author() { AuthorName = author }; db.Authors.Add(newAuthor); db.SaveChanges(); bookAuthors.Add(newAuthor); if (titleInDb != null) { titleInDb.Authors.Add(newAuthor); } } Book newBook = new Book() { Authors = bookAuthors, BookTitle = title }; if (isbn != null) { newBook.ISBN = isbn; var isbnInDb = (from b in db.Books where b.ISBN == isbn select b).FirstOrDefault(); if (isbnInDb != null) { throw new ApplicationException("Duplicated ISBN"); } } if (price != 0m) { newBook.Price = price; } if (webSite != null) { newBook.WebSite = webSite; } db.Books.Add(newBook); db.SaveChanges(); }