public ActionResult Save(CommentSaveModel m)
        {
            if (ModelState.IsValid && m.SessionId == Session.SessionID) {
                using (var db = new DataContext()) {
                    // Check if the comment belongs to a standard entity.
                    var isPage = db.Pages.Where(p => p.Id == m.ParentId).SingleOrDefault() != null ;
                    var isPost = !isPage && db.Posts.Where(p => p.Id == m.ParentId).SingleOrDefault() != null ;
                    var isMedia = !isPage && !isPost && db.Posts.Where(c => c.Id == m.ParentId).SingleOrDefault() != null ;
                    var isUload = !isPage && !isPost && !isMedia && db.Uploads.Where(u => u.Id == m.ParentId).SingleOrDefault() != null ;

                    // Now get the comment settings
                    var sett = Areas.Manager.Models.CommentSettingsModel.Get() ;

                    // Check comment settings according to type
                    if (isPage && (!sett.EnablePages || (!User.Identity.IsAuthenticated && !sett.EnableAnonymous)))
                        return Redirect("~/") ;
                    else if (isPost && (!sett.EnablePosts || (!User.Identity.IsAuthenticated && !sett.EnableAnonymous)))
                        return Redirect("~/") ;
                    else if (isMedia && (!sett.EnableMedia || (!User.Identity.IsAuthenticated && !sett.EnableAnonymous)))
                        return Redirect("~/") ;
                    else if (isUload && (!sett.EnableUploads || (!User.Identity.IsAuthenticated && !sett.EnableAnonymous)))
                        return Redirect("~/") ;

                    Comment comment = null ;

                    // Try to load the comment if this is an update
                    if (m.Id != null)
                        comment = db.Comments.Where(c => c.Id == m.Id).SingleOrDefault() ;

                    // If no existing comment was found, create a new
                    if (comment == null) {
                        comment = new Comment() ;
                        comment.Attach(db, EntityState.Added) ;
                    }

                    // If the user isn't authenticated, add user info
                    if (!User.Identity.IsAuthenticated) {
                        comment.AuthorName = m.AuthorName ;
                        comment.AuthorEmail = m.AuthorEmail ;
                    }

                    // Update standard properties
                    comment.Title = m.Title ;
                    comment.Body = m.Body ;

                    db.SaveChanges() ;
                }
            }
            return new RedirectResult("~/") ;
        }
        /// <summary>
        /// Saves the current edit model.
        /// </summary>
        /// <returns>Whether the entity was updated or not</returns>
        public bool Save()
        {
            using (var db = new DataContext()) {
                var comment = db.Comments.Where(c => c.Id == Id).SingleOrDefault() ;
                if (comment == null) {
                    comment = new Comment() ;
                    comment.Attach(db, EntityState.Added) ;

                    comment.ParentId = ParentId ;
                    comment.Title = Title ;
                    comment.Body = Body ;
                }
                comment.Status = Status ;

                return db.SaveChanges() > 0 ;
            }
        }