Я создаю приложение MVVM. Я пытаюсь структурировать свое приложение следующим образом:
Я не знаю, распространен ли этот подход в 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);
}
}
Есть несколько вещей, в которых я не уверен / не уверен:
Спасибо: -)