WPF, WCF, Entity, MVVM сомневаются! - PullRequest
1 голос
/ 21 декабря 2010

Я использую ссылку на службу WCF в проекте WPF, а моя модель данных структуры сущностей находится в проекте WCF.

И я использую MVVM Light Framework. Я делаю следующие вещи:

  1. Я использую LINQ в сервисе для получения данных, а затем извлекаю их из WPF, обычно из obersvablecollections.
  2. Все работает в части вида, как заполнение сетки данных, представления по мере необходимости.

Но у меня есть следующие сомнения:

  1. Это правильный способ передачи данных между wcf и wpf.
  2. Я еще ни разу не использовал Модель, у меня есть сомнения относительно того, когда ее использовать?
  3. Я также хотел сохранить данные из сетки данных. Мне удалось передать наблюдаемую коллекцию обновленных данных сетки данных в функцию сервиса. Но как мне обновить сущность из этой коллекции? по циклу? не правильно звучит. Как только я обновлю сущность из этой коллекции, я смогу использовать saveChanges для обновления в базе данных.
  4. Когда мне нужно показать иерархические данные в виде дерева, где сделать эти данные иерархическими, из хранимой процедуры xml? использовать представление для создания столбца критериев группировки? создать эту колонку в сервисе? создать этот столбец / свойство в презентации?

1 Ответ

1 голос
/ 21 декабря 2010

1 - нет правильного пути, это зависит от ваших требований и целей.

2 - С MVVM модель должна находиться между WPF и базой данных.Это означает, что все обращения к базе данных должны проходить через модель, и все записи в базу данных также должны проходить через модель.Графический интерфейс WPF должен привязываться только к модели.Обычно это означает, что ваша часть WPF состоит в основном из кода XAML.Весь код, который обращается к базе данных, должен быть в модели.

Есть веские причины для отделения этого.

  • Вы можете написать модульные тесты для этой модели.
  • Модель представления не зависит от внешнего вида графического интерфейса.Это означает, что вы можете легко изменить графический интерфейс, добавив различные компоненты и просто привязавшись к модели.
  • Быстрый поиск в Google, вероятно, может дать больше причин.

3 - Я бы попытался отправить только те объекты, которые изменились.Это можно сделать, передав коллекцию вашей модели представления, и пусть ваша модель представления выяснит, что изменилось.

4 - Я не совсем понимаю, что вы хотите сделать.Обычно, чтобы создать TreeView, вы должны создать HierarchicalDataTemplate для каждой из ваших моделей представлений.Элемент управления TreeView позаботится обо всем остальном.Вы должны действительно сделать некоторые уроки по этому вопросу, потому что это довольно сложно обернуть голову вокруг.

...