РЕДАКТИРОВАТЬ: я обнаружил, что проблема заключается в том, что мой сервис WCF получает грязные чтения.Пожалуйста, смотрите мой другой пост.Я все равно буду благодарен за любые советы по поводу того, что я могу улучшить в этом посте (например, простая орфографическая ошибка в моем JS или лучший способ обновить частичное представление).
Другой пост: Linq toSQL - Грязные чтения после обновления - Служба WCF
РЕДАКТИРОВАТЬ: Хорошо, я сузил до проблемы в веб-службе.Я написал небольшое приложение, которое использует мою справочную службу для чтения и обновления Locations.Иногда, когда я читаю местоположение, оно меняется на старое имя, и я получаю сообщение об ошибке ChangeConflictException: строка не найдена или не изменена.
Хорошо, в основном у меня есть представление MVCс формой и 2 частичными представлениями (раскрывающийся список и дерево расширений DevExpress MVC).Когда пользователь щелкает узел, он вызывает JS-функцию на стороне клиента, которая отправляет серверу сообщение Ajax POST, получает сведения об узле (из результата JSON) и заполняет форму.
Когда пользователь щелкает'Submit / Save', другая функция JS вызывается, и она также делает POST Ajax на сервер, передавая информацию об узле.Когда эта запись возвращается с результатом JSON, на сервер отправляется запрос GQ JQuery.Он получает частичное представление в виде строки html, а затем заменяет TreeView новым HTML.
Кажется, что все это работает, за исключением того, что если я изменяю имя узла с Node1 на Node2 на Node3, я иногда получаю Node1в TreeView, Node3 в DropDown и Node2 в форме, когда я нажимаю на этот «Node1» в TreeView.Все же это все из базы данных, которая имеет правильную информацию.И каждый раз, когда на Узле щелкают или сохраняются, Модель обновляется с использованием самых последних данных из базы данных.Когда я проверяю код позади, иногда эта обновленная модель неверна (например, говорит Node2 вместо Node3).
Почему это происходит?Я попытался очистить кеш браузера, добавив атрибуты без кеша в мой контроллер (из других вопросов о переполнении стека).Я понятия не имею, что происходит!Иногда, если я продолжаю нажимать кнопку «Обновить» на странице, дерево и раскрывающийся список меняются на предыдущие значения (например, Node1)!
Примечание: Node == Location == Unit
(таблица / сущность БД, с которой я работаю).
Примечание: в базе данных есть триггер в расположении (узлах дерева).
Примечание: сервер использует WCF для связи с базой данных.
Примечание: .Using
для службы - это расширение, которое обеспечивает правильное закрытие клиента службы.
Редактировать: Удален код по запросу моего коллеги.