Как сохранить (SubmitChanges) при двухстороннем связывании с базой данных - PullRequest
0 голосов
/ 30 января 2012

У меня есть приложение WP7 (Silverlight), у которого есть страница с текстовым полем, которое привязано (TwoWay) к свойству в viewmodel, которое получает значение из базы данных Linq в Sql. Все это работает, за исключением случаев, когда я изменяю значение текстового поля, оно все правильно устанавливает, но не вызывает SubmitChanges текста данных и, следовательно, не сохраняется. Это нормальный сценарий? Должен ли я сделать это по-другому? Есть ли способ сообщить двусторонней привязке, что она должна вызывать метод SubmitChanges? Спасибо.

Ответы [ 2 ]

2 голосов
/ 30 января 2012

Вы не должны привязывать текстовое поле непосредственно к базе данных. Так что, если вы не используете ViewModel, который реализует INotifyPropertyChanged, а вместо этого привязываете напрямую к классу сущностей linq2sql, вы делаете это неправильно.

Оберните свойства, которые вы хотите отобразить для пользовательского интерфейса в ViewModel, и вызовите SubmitChanges() в вашем PropertyChanged обработчике событий.

Конечно, лучший подход - это иметь «естественную точку сохранения», например, если у вас есть изменение страницы (например, для OneNote / Office) или кнопка «Сохранить».

0 голосов
/ 30 января 2012

Это нормально.Если вы хотите фиксировать каждый раз, когда свойство изменяется, вы можете подписаться на событие PropertyChanged вашего объекта и вручную вызвать SubmitChanges.

Но я бы не советовал.Для достижения оптимальной производительности переопределите метод OnNavigatedFrom на своей странице и вызовите SubmitChanges там.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...