У меня есть таблица базы данных под названием «Сообщения», в которой хранится вся информация, касающаяся подачи статей на веб-сайт. Существует столбец с именем «Views», значение которого увеличивается каждый раз при просмотре определенного сообщения.
Процесс такой:
- Получить запись из базы данных
- Увеличение тока на единицу
- Сохранить изменения в базе данных.
Довольно просто. Меня беспокоит то, что если несколько человек нажмут на ссылку одновременно, обновления не будут точными. Как мне подойти к этому? Это должно быть сделано только в хранимой процедуре?
/// <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);
}