public ActionResult Destroy([DataSourceRequest] DataSourceRequest request, TweetGridViewModel model)
        {

                var tweetToRemove = this.Data.Tweets.GetById(model.Id);
                if (tweetToRemove != null)
                {
                    this.Data.Tweets.Delete(tweetToRemove);
                    this.Data.SaveChanges();
                }

            return Json(new[] { model }.ToDataSourceResult(request));
        }
        public ActionResult Update([DataSourceRequest] DataSourceRequest request, TweetGridViewModel model)
        {
            TweetGridViewModel newModel = model;

            if (model != null && ModelState.IsValid)
            {
                var tweetInDb = this.Data.Tweets.All(new string[] { "Tags" }).SingleOrDefault(t => t.Id == model.Id);
                tweetInDb.Text = model.Text;
                tweetInDb.DateCreated = model.DateCreated;
                foreach (var tag in model.Tags)
                {
                    if (tweetInDb.Tags.SingleOrDefault(t => t.Id == tag.Id) == null)
                    {
                        var tagToAdd = this.Data.Tags.GetById(tag.Id);
                        tweetInDb.Tags.Add(tagToAdd);
                    }
                }

                List<int> tagsToRemove = new List<int>();

                foreach (var tag in tweetInDb.Tags)
                {
                    if (model.Tags.SingleOrDefault(t => t.Id == tag.Id) == null)
                    {
                        tagsToRemove.Add(tag.Id);
                    }
                }

                foreach (var id in tagsToRemove)
                {
                    var tagToRemove = tweetInDb.Tags.SingleOrDefault(t => t.Id == id);
                    tweetInDb.Tags.Remove(tagToRemove);
                }

                this.Data.SaveChanges();
            }

            return Json(new[] { newModel }.ToDataSourceResult(request, ModelState), JsonRequestBehavior.AllowGet);
        }