/// <summary> /// delete a record /// </summary> /// <param name="id"></param> /// <returns></returns> public static Msg Delete(Guid id) { var msg = new Msg(); try { var goOn = TopicElected.Exists(id); if (!goOn) { msg.Error = true; msg.Body = string.Format("Topic {0} doesn't exist!", id); } else { var dbm = ListAll().Single(x => x.Id.Equals(id)); using (var db = new GarfielderEntities()) { db.Attach(dbm); db.DeleteObject(dbm); db.SaveChanges(); ClearCache(); }//using } } catch (Exception ex) { msg.Error = true; msg.Body = ex.Message; } return(msg); }
[HttpPost, ValidateInput(false)]/* TODO:MVC3正式版时可以将ValidateInput注释掉,因为ContentX有AllowHtml属性 */ public ActionResult EditTopic(VMCampTopicShow obj) { if (this.ModelState.IsValid) { var dbm = default(Topic); using (var db = new GarfielderEntities()) { if (obj.IsNew) { obj.CreateAt = DateTime.Now; obj.Id = Guid.NewGuid(); dbm = new Topic(); dbm.CreatedAt = dbm.PublishedAt = obj.CreateAt; dbm.Published = true; dbm.Id = obj.Id; db.AddToTopics(dbm); } else { dbm = db.Topics.SingleOrDefault(x => x.Id == obj.Id); if (dbm == null) { obj.Error = true; obj.Msg = string.Format("Topic with id [{0}] has been deleted!", obj.Id); return(View(obj)); } } dbm.Title = obj.Title; dbm.ContentX = obj.ContentX; dbm.Slug = string.IsNullOrWhiteSpace(obj.Slug) ? obj.Title.CHSToPinyin("-") : obj.Slug.CHSToPinyin("-"); dbm.Description = dbm.ContentX; //save to db var msg = Topic.ValidateSlug(dbm.Slug, db); dbm.Slug = msg.Context["Slug"].ToString(); dbm.ModifiedAt = DateTime.Now; obj.Logo = dbm.Logo; db.Attach(CurrentUser); dbm.User = CurrentUser; db.SaveChanges(); //tags if (obj.TagID != null && obj.TagID.Count > 0) { dbm.Tags.Clear(); obj.TagID.ForEach(x => dbm.Tags.Add(db.Tags.Single(y => y.Id.Equals(x)))); } //groups if (obj.GroupID != null && obj.GroupID.Count > 0) { dbm.Groups.Clear(); obj.GroupID.ForEach( x => dbm.Groups.Add(db.Groups.Single(y => y.Id.Equals(x))) ); } //保存关系表 db.SaveChanges(); //update tags and groups obj.Groups = dbm.Groups.ToList(); obj.Tags = dbm.Tags.ToList(); }//using } ; return(View(obj)); }//edit topic