На каждой странице моего сайта токен передается как параметр строки запроса.Код на стороне сервера проверяет, существует ли токен в базе данных.(Токен - это поле уникального идентификатора в базе данных).Если токен существует, он будет использовать существующий, если нет, то создаст новую строку с новым токеном.
Проблема заключается в том, что время от времени я вижу дублирующую запись в базе данных (две строкис тем же уникальным идентификатором).Я заметил, что время вставки записи составляло примерно полсекунды.Мое единственное предположение - когда сайт посещают впервые, страницы aspx не были полностью скомпилированы.Таким образом, это занимает несколько секунд, и пользователь переходит на другую страницу сайта, вводя другой URL-адрес, и два запроса выполняются почти одновременно.
Есть ли способ предотвратить эту проблему с дублирующейся записью?от происходящего?(на стороне сервера или в базе данных ?? ...)
Это код в вопросах, которые являются частью каждой страницы сайта.
var record = (from x in db.Items
where x.Token == token
select x).FirstOrDefault();
if (record == null)
{
var x = new Item();
x.Id = Guid.NewGuid();
x.Token = token;
db.Items.InsertOnSubmit(x)
db.SubmitChanges;
}