2013-05-26 4 views
0

В моем веб-приложении у нас есть список студентов, и у нас есть вход в систему. Когда несколько сотрудников входят в систему и пытаются отредактировать две разные детали ученика, когда первый пользователь открывает страницу, а второй пользователь открывает вторую страницу, одновременно пытаясь обновить две разные детали ученика, при обновлении первые пользовательские данные не получат обновления, а второй пользователь Обновления данных. При проверке с точкой прерывания, в то время при первом обновлении пользователя, он принимал студенческий идентификатор деталей, открытых вторым пользователем. Пробовал Lock, но прежде чем он смог перейти к хранимой процедуре, значение меняется. Любая помощь оценивается.Чтобы заблокировать sql, когда несколько пользователей пытаются обновить информацию о разных пользователях

+0

*** SQL *** - это только * Структурированный язык запросов * - язык, используемый многими системами баз данных, но не продукт базы данных ... многие вещи специфичны для поставщиков, поэтому нам действительно нужно знать, что * * система баз данных ** (и какая версия) вы используете (пожалуйста, обновляйте теги соответственно) .... –

+1

Я думаю, что у вас есть несколько статических полей на странице ASP.NET. Плохая идея. – YK1

ответ

3

То, что вы описываете, звучит просто как ошибка (или ошибки) в коде, который обрабатывает эти данные.

Наиболее распространенной ошибкой здесь является использование членов static для хранения данных, которые на самом деле запрашиваются. static означает «за домен приложения», поэтому все запросы разделяют те же поля. В принципе: не делай этого.

Нередко найти код, который использует статический механизм, чтобы избежать передачи данных между местами - потому что его можно вырвать из ниоткуда. Это все еще используется очень неуместно. Он будет работать нормально на dev-машине просто потому, что у вас обычно есть один одновременный пользователь на машине-разработчике. Большинство людей хотят веб-сайт, который масштабируется для нескольких пользователей.

Поиск любых статических элементов. Если вы найдете какой-либо (возможно, за исключением значений конфигурации, которые не меняются во время выполнения), они, вероятно, ошибочны.

Вы также можете добиться тех же ошибок, используя неправильное использование кеша или приложения.

0

Я думаю, что вы используете статические переменные/поля или открываете два режима редактирования информации о студенте на двух соседних вкладках и удерживаете редактирование studentId в сеансах.
Когда вы открываете второго пользователя на новой вкладке, первый идентификатор ученика переопределяется вторым, даже когда вы возвращаетесь на вкладку ученика и обновляете (выполняете отправку сведений), он будет обновлен для второго пользователя.

Вы избегаете такого рода проблем, используя ViewState["StudentID"] или Скрытые поля, потому что их область действия находится внутри страницы.

Смежные вопросы