Обновление CollectionViewSource одним нажатием кнопки? - PullRequest
0 голосов
/ 23 сентября 2019

Изучая WPF, я начал с разработки пользовательского интерфейса для образца базы данных, такой как NorthWind, по адресу Документы VS VS от Microsoft, и предложил View Refreshing Code Piece , например:

custViewSource.View.Refresh();

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

Давайте предположим, что я начинаю отладку указанного проекта, но в то же время, , пока указанный проект работает , я меняю имя Клиента через SSMS или Access Front-End, связанный с указанной БД Northwindзатем нажмите на новую кнопку и запустите:

custViewSource.View.Refresh();

не отражает новое имя?

Причина и решение, о котором я не хочу знать, это то, чтоесли одна база данных совместно используется пользователями, то, если запись была обновлена ​​одним пользователем, как уведомить другого пользователя о нажатии кнопки и не выполнять ту же задачу снова?

Я тсовершенно новый для мира WPF.

Спасибо за вашу помощь.

1 Ответ

0 голосов
/ 24 сентября 2019

Вызов Refresh() в представлении в памяти не запрашивает базу данных для новых данных.Вам нужно как-то самостоятельно вводить команды SQL, например, так же, как вы делали это при первоначальном заполнении CollectionViewSource.

Если вы используете Entity Framework, вы можете вызвать ToList() на DbSet и установите для свойства Source новый список элементов, возвращаемых из БД:

custViewSource.Source = context.Customers.ToList();

На самом деле нет никакой связи между объектом CollectionViewSource и удаленной базой данных.Представление содержит только данные, которыми вы заполнили его исходную коллекцию (эти данные могут поступать из базы данных, но представление на самом деле не заботится), и вы несете ответственность за написание кода, который обновляет эти данные соответствующим образом.

...