Мы разрабатываем приложение Win32, которое обращается к базе данных SQL 2005 через Linq to SQL. Проблема заключается в том, что 2 пользователя имеют доступ к одной и той же записи (просмотр и редактирование)… Пользователь 1 обновляет запись (DataContext.SubmitChanges ()), пользователь 2 будет продолжать видеть старую информацию, пока он не перезапустит приложение. Итак, мы хотели бы обновить контекст пользователя 2 ... Решение, которое появляется прямо сейчас, - это вызвать DataContext.Refresh для синхронизации объекта с таблицей SQL ... Нам интересно, существует ли другое решение?
Спасибо





Я заметил, что Refresh может быть очень неприятным в зависимости от данных, которые вы уже получили от объекта, другое решение - сбросить контекст, который вы используете, на новый экземпляр.
context = new MyDataContext(ConnectionString);
Это, по крайней мере, в сценариях, в которых я его использую, снижает накладные расходы и меньше вызовов БД.
Да, я признаю, что меня это тоже расстроило, с ожидающими изменениями в одном контексте это становится проблемой. Одна из причуд LINQ, с которой я начинаю жить.
подтвердил, что .Refresh все еще работает медленно 3 года спустя
Проблема заключается в том, что мы хотим обновить объект, который был прикреплен к предыдущему экземпляру DataContext ... Вызов DataContext.SubmitChanges ничего не обновляет, потому что никаких изменений не обнаружено ... Итак, я думаю, мне нужно повторно прикрепить объект к новому datacontext