//对回复的点赞 public void ForRep(int creNum, int repid, int userid) { Praised p; Replys R = lpe.Replys.Where(e => e.ReplyID == repid).FirstOrDefault(); R.Rep_Praise_Num += creNum; if (creNum == 1) { p = new Praised() { Rep_Id = repid, User_Id = userid }; lpe.Praised.Add(p); } else { //否则取消点赞回复 p = lpe.Praised.Where(e => (e.Rep_Id == repid && e.User_Id == userid)).FirstOrDefault(); lpe.Praised.Remove(p); } try { lpe.SaveChanges(); } catch (Exception e) { throw e; } }
//对评论点赞 public void ForCom(int creNum, int comid, int userid) { Praised p; Comment c = lpe.Comment.Where(e => e.CommentID == comid).FirstOrDefault(); c.Com_Praise_Num += creNum; if (creNum == 1) { //creNum为1表示点赞 p = new Praised() { User_Id = userid, Com_Id = comid }; lpe.Praised.Add(p); } else { //否则表示取消点赞 p = lpe.Praised.Where(e => (e.Com_Id == comid && e.User_Id == userid)).FirstOrDefault(); lpe.Praised.Remove(p); } try { lpe.SaveChanges(); } catch (Exception e) { throw e; } }
//获取所有评论回复与当前用户的联系 public IEnumerable <ViewModel> GetComAndRep(int postid) { int now_userid = 0; if (Session["user"] != null) { now_userid = (int)Session["userid"]; } //查找当前帖子下所有评论 IEnumerable <Comment> coms = lpe.Comment.Include("User").Where(e => e.Post_Id == postid).OrderByDescending(e => e.Com_Praise_Num); IList <ViewModel> vms = new List <ViewModel>(); foreach (var com in coms) { //status为2表示未被点赞 int status = 2; Praised p = lpe.Praised.Where(e => (e.Com_Id == com.CommentID && e.User_Id == now_userid)).FirstOrDefault(); //查找当前用户点赞过的所有回复 IQueryable <Praised> pp = lpe.Praised.Where(e => e.User_Id == now_userid); var query = (from P in pp join R in lpe.Replys on P.Rep_Id equals R.ReplyID select R).ToList(); IList <Replys> pr = query; if (p != null) { //说明该评论被当前用户点赞过 status = 1; } //获取该评论所有回复 IQueryable <Replys> rs = lpe.Replys.Include("User").Where(e => e.Com_Id == com.CommentID).OrderByDescending(e => e.ReplyID); //初始化一个viewmodel实例 ViewModel vm = new ViewModel() { c = com, //一条评论 Rs = rs, //这条评论的所有回复 PraStatus = status, //这条评论有没有被当前用户点赞 Ps = pr // }; vms.Add(vm); } IEnumerable <ViewModel> vmss = vms; return(vmss); }
public IEnumerable <ViewModel> GetComAndRep() { //启用贪婪加载 否则你会发现当表中的数据为空时你第一次插入数据 会报Nullreferenceexception(未将对象引用设置到实例) //原因就是 comment表查出来但是默认的导航属性时懒加载 在试图中如果存在使用导航属性的地方自然报错 IEnumerable <Comments> coms = db.Comments.Include("UserInfo"); IList <ViewModel> vms = new List <ViewModel>(); foreach (var com in coms) { int status = 2; //查找该评论下的点赞以及回复 //实际项目中 e.User_Id==1 应当使用当前用户id Praised p = db.Praised.Where(e => (e.ComID == com.ComID && e.Users_id == 1)).FirstOrDefault(); //查找出当前用户点赞过的所有回复 IQueryable <Praised> pp = db.Praised.Where(e => e.Users_id == 1); var query = (from P in pp join R in db.Reply on P.Reply_id equals R.Reply_id select R).ToList(); IList <Reply> pr = query; if (p != null) { //该评论被当前用户赞过了 status = 1; } IQueryable <Reply> rs = db.Reply.Include("User").Where(e => e.ComID == com.ComID); ViewModel vm = new ViewModel() { c = com, Rs = rs, PraStatus = status, Ps = pr }; vms.Add(vm); } IEnumerable <ViewModel> vmss = vms; return(vmss); }