Ответ варьируется, в зависимости от какого механизма устройства хранения данных Вы используете. Идеальный сценарий - то, при использовании InnoDB. В этом случае можно использовать эти --single-transaction
флаг, который даст Вам когерентный снимок базы данных в то время, когда дамп начинается.
Я также немного скептически относился к MVVM, пока не посмотрел эту отличную презентацию Джейсона Долинджера. Я рекомендую всем своим коллегам, которые только начинают работать с WPF и MVVM, посмотреть его.
Джейсон начал с приложения, которое можно было бы написать "традиционным" Кстати, при нажатии кнопок, обрабатываемых обработчики событий в коде программной части, затем обновил другие части пользовательского интерфейса. Использование привязки данных WPF, команд и Единство, он преобразовал его, кусочек за кусок, в гораздо более управляемом, инкапсулированный, читаемый и тестируемый Дизайн МВ-ВМ. Это было потрясающе.
Чтобы ответить на ваш вопрос более прямо, даже если кажется глупым привязываться к ViewModel, когда в вашей модели уже есть все, вам часто понадобится одна небольшая корректировка модели, которая нужна только для View . Со временем эти небольшие изменения вкрадутся в ваши Модели, где им не место. Это сделает ваши модели более сложными, чем они должны быть.
Что я часто делаю, когда у меня есть Модель, в которой «есть все», так это то, что я добавляю ViewModel, который содержит одно свойство, Модель. Затем в своих привязках я просто привязываюсь к Model.Name, Model.Age и т. Д. Это действительно не требует усилий. Позже, если мне понадобятся настройки только для представления, у меня уже есть готовый класс ViewModel. Это также делает ваш код более интуитивно понятным и понятным. Вы не удивитесь, я привязался к модели или ViewModel в этом случае? Это всегда будет ViewModel.
INotifyPropertyChanged
и INotifyCollectionChanged
- не единственные аспекты, которые следует учитывать ... Во многих случаях данные, представленные моделью, не могут быть легко использованы Посмотреть. Роль ViewModel состоит в том, чтобы действовать как адаптер между моделью и представлением: предоставлять данные в форме, которая позволяет представлению легко привязываться к ним, предоставлять команды, к которым представление может связываться для выполнения действий ... Обычно модель не предоставляет ICommand
s: если это так, то модель специфична для WPF, что никогда не бывает хорошо, если вы хотите повторно использовать в каком-то другом приложении, не относящемся к WPF ...
Я использую MVVM в течение нескольких месяцев, и это сделало мою жизнь намного проще: больше никакого «спагетти-кода» в файлах кода программной части, четкое разделение обязанностей, чистая общая архитектура ...
Я использовал MVVM для двух проектов, и вот несколько вещей, которые я делал в ViewModel: