C# 更新数据库中网页的浏览次数

C# 更新数据库中网页的浏览次数,c#,.net,asp.net,asp.net-mvc,C#,.net,Asp.net,Asp.net Mvc,我有一个名为“Posts”的数据库表,它存储了关于网站上提交的文章的所有信息。有一个名为“Views”的列,它是一个值,每次查看特定的帖子时该值都会递增 过程如下: 从数据库中获取记录 使电流增加1 将更改保存到数据库 很简单。我担心的是,如果多人同时点击链接,更新将不准确。我应该如何处理这个问题?这应该只在存储过程中执行吗 /// <summary> /// Updates the view count of a post. /// </summary

我有一个名为“Posts”的数据库表,它存储了关于网站上提交的文章的所有信息。有一个名为“Views”的列,它是一个值,每次查看特定的帖子时该值都会递增

过程如下:

  • 从数据库中获取记录
  • 使电流增加1
  • 将更改保存到数据库
  • 很简单。我担心的是,如果多人同时点击链接,更新将不准确。我应该如何处理这个问题?这应该只在存储过程中执行吗

        /// <summary>
        /// Updates the view count of a post.
        /// </summary>
        /// <param name="postId">The Id of the post to update</param>
        public bool UpdateViewCount(int postId)
        {
            Repository repository = new Repository();
            Post p = repository.Posts.Where(p => p.Id == postId).SingleOrDefault();
            if (p != null)
            {
                p.Views++;
            }
            repository.SubmitChanges(System.Data.Linq.ConflictMode.ContinueOnConflict);
        }
    
    //
    ///更新文章的视图计数。
    /// 
    ///要更新的帖子的Id
    公共bool UpdateViewCount(int postId)
    {
    Repository Repository=新存储库();
    Post p=repository.Posts.Where(p=>p.Id==postd.SingleOrDefault();
    如果(p!=null)
    {
    p、 视图++;
    }
    提交更改(System.Data.Linq.ConflictMode.ContinueOnConflict);
    }
    
    一次完成:

    UPDATE table SET views=views+1 WHERE myId=12;
    

    如果您的数据库上下文被称为_db,那么您可以使用它

    _db.ExecuteCommand("UPDATE posts SET views=views+1 WHERE id={0}", postId);
    
    要进一步阅读,请查看顾的帖子