RFC для HTTP 1.1 говорит, что правильный метод состоит в том, чтобы добавить HTTP-заголовок для:
Управление Кэша: без кэшей
Более старые браузеры могут проигнорировать это, если они не правильно совместимы к HTTP 1.1. Для тех можно попробовать заголовок:
Прагма: без кэшей
Это, как также предполагается, работает на браузеры HTTP 1.1.
Вы можете обнаружить и решить свои проблемы параллелизма, перехватив исключение ChangeConflictException :
using (var db = new MyDataContext())
{
var root = (from post in db.Post
where post.Id == rootPostId
select post).Single();
root.LastActivityUtc = DateTime.UtcNow;
try
{
db.SubmitChanges();
}
catch (ChangeConflictException)
{
db.ChangeConflicts.ResolveAll(RefreshMode.KeepChanges);
db.SubmitChanges();
}
}
С RefreshMode .KeepChanges вы сохраните все изменения вашего объекты клиентов и изменения других пользователей в других полях будут объединены.
Рекомендуемые статьи:
Похоже, это хороший кандидат для хранимой процедуры. Вместо выбора / обновления создайте простую хранимую процедуру, которая выполняет следующее:
UPDATE Post SET LastActivityUtc = GETUTCDATE () WHERE Id = @ id
Передайте идентификатор хранимой процедуре и вызывайте ее всякий раз, когда вы хотите обновить последнее действие сообщения.