Catel используя IEditableObject - PullRequest
       33

Catel используя IEditableObject

0 голосов
/ 17 октября 2018

Я тестирую Catel MVVM и хотел бы использовать реализованный IEditableObject.У меня есть несколько вопросов, но документация , которую я нашел, не очень детальна в этом вопросе.

У кого-нибудь была полезная ссылка, как мне это настроить или как она работает, или что-то в этом роде?Или мне действительно стоит взглянуть на исходный код, чтобы получить эти очки и понять, как catel выполняет свою работу.

У меня есть следующие вопросы:

  • Что именно делает метод SaveViewModelAsync()?
  • Где он сохраняет данные или где я могу его сконфигурировать?
  • Как я могу использовать его с Orc.EntityFramework6 или сделатьУ меня есть это вручную?
  • В чем разница между SaveViewModelAsync() и SaveAsync()?
  • В чем разница между CancelViewModelAsync() и CancelAsync()?

Я могу отменить редактирование только один раз.Если я снова отредактирую ту же ViewModel, отмена больше не действует.Я думаю, что после первой отмены пропускает только BeginEdit(), как предлагает документация .Вот некоторые сведения на этот счет:

  1. Я редактирую ViewModel и Модель устанавливаю новое значение
  2. Я выполняю CancelViewModelAsync(), установщик в Модели не трогается
  3. Я редактирую ViewModel и Модель устанавливаю новое значение.Текущее значение является исходным значением
  4. Я выполняю CancelViewModelAsync(), ничего не произошло
  5. Я редактирую ViewModel, и Модель устанавливает новое значение.Текущее значение является отредактированным значением из шага 3, как показано в представлении

Спасибо за помощь

1 Ответ

0 голосов
/ 17 октября 2018

Множество вопросов в одном вопросе, но постараюсь ответить на них:

Q1) Что именно делает метод SaveViewModelAsync ()

Он вызывает IEditableObject.EndEdit на всех моделях, которые его поддерживают (и отмечены ModelAttribute

Q2) Где хранятся данные или где я могу их настроить?

Он просто одобряет изменения в модели, ничего не «сохраняет».Так, например, если вы используете модели Catel, он зафиксирует изменения, сделанные виртуальной машиной.Если вы отмените, она вернет модель обратно в состояние, в котором она была при инициализации виртуальной машины.

Q3) Как я могу использовать ее с Orc.EntityFramework6, или у меня это есть вручную?

Вы должны сделать это вручную.Виртуальные машины в Catel работают с моделями, это зависит от вас, когда / где вы сохраните их (например, базу данных, диск, веб-сервис и т. Д.)

Q4) Чем отличаются SaveViewModelAsync () иSaveAsync ()?

SaveViewModelAsync - это вызываемый публичный метод, который заботится о сантехнике для вас.SaveAsync - это метод, который вы можете переопределить, чтобы добавить дополнительную логику сохранения (например, хранение в базе данных, службы обновлений и т. Д.).

Q5) В чем разница между CancelViewModelAsync () и CancelAsync ()?

См. Q4

...