ViewModel против модели, которая несет ответственность за связь с бизнес-уровнем? - PullRequest
1 голос
/ 16 февраля 2010

Впервые в wpf и MVVM. Я в некотором замешательстве, что к чему относится.

Предположим, у нас есть представление с btnSave.

При сохранении кто несет ответственность за вызов бизнес-уровня?

Насколько я понимаю, модель просто содержит свойства, а не методы ViewModel фактически реализует EG "DelegateCommand SaveCommand" и поэтому вызывает бизнес-уровень. Однако мне сказали, что на самом деле ответственность за модель заключается в том, чтобы назвать бизнес-уровень.

пример взят с Джоша Смита на MSDN

Извлечение оттуда

      public ICommand SaveCommand
        {
        get
        {
            if (_saveCommand == null)
            {
                _saveCommand = new RelayCommand(param => Save(),param => CanSave);
            }
            return _saveCommand;
        }
    }

    /// <summary>
    /// Saves the customer to the repository.  This method is invoked by the SaveCommand.
    /// </summary>
    private void Save()
    {
        if (!_customer.IsValid)
            throw new InvalidOperationException(Strings.CustomerViewModel_Exception_CannotSave);

        if (this.IsNewCustomer)
            _customerRepository.AddCustomer(_customer);

        base.OnPropertyChanged("DisplayName");
    }

Ваше мнение очень ценится.

Ответы [ 3 ]

3 голосов
/ 17 февраля 2010

Модель обычно считается частью, если не целым, бизнес-уровня. Итак, ViewModel должен вызывать методы в Model (бизнес-уровень).

0 голосов
/ 20 мая 2014

MVVM - это шаблон для организации уровня презентации. То, как ваше приложение хранит свои данные, является другим дизайнерским решением.

Вероятно, не очень хорошо, если объект модели полон операторов SQL, которые сопоставляют его с таблицами базы данных. Но если эти операторы находятся в репозитории, а модель знает репозиторий, это хорошее решение.

Или вы можете решить сделать модель независимой от хранилища и сделать получение данных модели ответственностью ViewModel. Для маленьких моделей это, вероятно, чище. Для более крупных моделей может быть сложно для ViewModel узнать, сколько объектов нужно извлечь, прежде чем он вызовет бизнес-методы для объекта домена.

0 голосов
/ 17 февраля 2010

Представление обычно привязывается к свойствам в ViewModel. ViewModel работает (делает CRUD) с бизнес-уровнем. Отличную статью можно найти здесь - http://msdn.microsoft.com/en-us/magazine/dd419663.aspx

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