public IHttpActionResult PutPortfolioBook(int Id, PortfolioBook portfolioBook) { if (!ModelState.IsValid) { return BadRequest(ModelState); } if (Id != portfolioBook.Id) { return BadRequest(); } try { db.PortfolioBooks.Attach(portfolioBook); db.Entry(portfolioBook).State = EntityState.Modified; db.SaveChanges(); db.Entry(portfolioBook).Collection(pb => pb.Items).Load(); //Create a new temporary list to store the items. List<PortfolioItem> tempPortfolioItems = new List<PortfolioItem>(); foreach (var item in portfolioBook.Items) { tempPortfolioItems.Add(item); } //Go through the temporary list, figuring out if we need to add //or update the item. foreach (var item in tempPortfolioItems) { var portItemToDelete = db.PortfolioItems.Where(t => t.Id == item.Id).FirstOrDefault(); //If we found it in the database we need to update it. if (portItemToDelete != null) { //update case db.PortfolioItems.Attach(item); db.Entry(portItemToDelete).State = EntityState.Modified; } //Otherwise we're going to add it. else { //adding db.PortfolioItems.Add(item); } } db.SaveChanges(); return Ok<PortfolioBook>(portfolioBook); } catch (Exception ex) { //There was a problem storing the portfolio return StatusCode(HttpStatusCode.InternalServerError); } }
public IHttpActionResult PostPortfolioBook(PortfolioBook portfolioBook) { if (!ModelState.IsValid) { return BadRequest(ModelState); } db.PortfolioBooks.Add(portfolioBook); db.SaveChanges(); return Ok<PortfolioBook>(portfolioBook); }