Обновление количества просмотров веб-страницы в базе данных - PullRequest
3 голосов
/ 18 декабря 2008

У меня есть таблица базы данных под названием «Сообщения», в которой хранится вся информация, касающаяся подачи статей на веб-сайт. Существует столбец с именем «Views», значение которого увеличивается каждый раз при просмотре определенного сообщения.

Процесс такой:

  1. Получить запись из базы данных
  2. Увеличение тока на единицу
  3. Сохранить изменения в базе данных.

Довольно просто. Меня беспокоит то, что если несколько человек нажмут на ссылку одновременно, обновления не будут точными. Как мне подойти к этому? Это должно быть сделано только в хранимой процедуре?

    /// <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);
    }

Ответы [ 2 ]

6 голосов
/ 18 декабря 2008

Сделай это за один раз:

UPDATE table SET views=views+1 WHERE myId=12;
4 голосов
/ 18 декабря 2008

Если ваш контекст БД называется _db, вы можете использовать это.

_db.ExecuteCommand("UPDATE posts SET views=views+1 WHERE id={0}", postId);

для дальнейшего ознакомления с постом Гу здесь.

http://weblogs.asp.net/scottgu/archive/2007/08/27/linq-to-sql-part-8-executing-custom-sql-expressions.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...