0

Как реализовать паттерн MVVM в WPF, используя модель данных Ado.NET? У меня есть БД Northwind, модель которой я добавил в проект: Содержание проекта После создания модели данных обычно я заполняю класс Core следующим образом:

public static class Core
{
    public static NorthwindEntities db = new NorthwindEntities();
}

И использую на страницах что-то подобное:

public partial class CategoriesTablePage : Page
{
    public CategoriesTablePage()
    {
        InitializeComponent();
        AllCategories = Core.db.Categories.ToList();
        DataContext = this;
    }
public List<Categories> AllCategories { get; set; }

}

Но из-за такого подхода в один момент на странице накапливается много ненужного кода, который не структурирован и все превращается в нечитаемую кашу. Как вы реализуете MVVM при работе с БД?

N000b
  • 1
  • public List<Categories> AllCategories { get; set; } (ну и собственно заполнение листа) переместить во ViewModel, которая связана с View – Pekor Aug 25 '22 at 15:20
  • ну и DataContext можно и лучше прописать в XAML – Pekor Aug 25 '22 at 15:21
  • @Pekor DataContext, это нарушение MVVM. А в вопросе он вообще непойми зачем указан... – EvgeniyZ Aug 25 '22 at 16:18
  • Касательно вопроса - static, если вы такое пишете, то это сразу означает то, что вы делаете что-то не то. У вас должен быть класс, в котором должны быть прописаны все методы для взаимодействия с базой (например List<Categories> AllCategories - это Model слой, а вы пишете это в Page, что является View слоем. Ваш View слой не должен вообще знать что-либо о других слоях (как о Model, так и ViewModel). Поймите что такое слои в MVVM (Model - данные, View - вид приложения (UI), ViewModel - связующий слой, который делает свойства для привязки View и общается с Model), сейчас у вас каша. – EvgeniyZ Aug 25 '22 at 16:22
  • Работа с внешним источником данных - это слой Model в MVVM, вся работа с базой должна быть внутри одного этого слоя. Всё, больше тут правил никаких нет. – aepot Aug 25 '22 at 20:20

0 Answers0