MVVM и многоуровневая реализация, реализация уровня обслуживания

Я создаю приложение MVVM. Я пытаюсь структурировать свое приложение следующим образом:

enter image description here

Я не знаю, распространен ли этот подход в MVVM. В любом случае, ViewModel использует уровень обслуживания, например, для заполнения модели или ObservableCollection, которую он обертывает. Чтобы использовать свои службы, ViewModel имеет поле, которое содержит абстракцию службы, например:

IService service;

Поскольку я использую Linq для запроса базы данных, у меня есть объекты, имена которых совпадают с именами моих доменов. Чтобы модель ViewModel не знала об объектах уровня обслуживания / базы данных, мне нужно, чтобы уровень обслуживания возвращал модель домена вместо объекта базы данных, созданного Linq. Я делаю это, выполняя следующие действия (пример того, над чем я работаю на работе):

ObservableCollection<ItemTypeViewModel> GetItemTypes()
{
   DataContextLocalDB dc = new DataContextLocalDB();
   ObservableCollection<ItemTypeViewModel> itemTypes = new ObservableCollection<ItemTypeViewModel>();

   foreach (ItemType itemType in dc.ItemTypes)
   {
      Models.ItemType type = new Models.ItemType();
      type.Name = itemType.Name;
      type.Description = itemType.Description;

      ItemTypeViewModel itemTypeViewModel = new ItemTypeViewModel(type);

      itemTypes.Add(itemTypeViewModel);
   }
}

Есть несколько вещей, в которых я не уверен / не уверен:

  • Это хороший способ структурирования в сочетании с MVVM ?
  • Я вынужден использовать Models.ItemType, чтобы отличить его от ItemType, полученного из базы данных. Это неизбежно?
  • Я возвращаю ObservableCollection - может быть, лучше было бы вернуть что-нибудь еще, а затем где-нибудь сделать то, что я вернул, ObservableCollection?
  • В общем, что можно улучшить или что может быть ошибка суждения, которую я сделал?

Спасибо: -)

6
задан TheDude 3 April 2011 в 08:14
поделиться