WPF - Где добавить действия CRUD в MVVM - PullRequest
0 голосов
/ 04 февраля 2020

Я новичок в WPF и пытаюсь внедрить модель MVVM в свое приложение WPF. У меня есть такой сценарий: модель Customers, представление клиента, CUstomersViewModel и класс Dbcontext.

Модель Customers.cs

 public partial class Customers
 {
     public int Id { get; set; }
     public string Customer { get; set; }     
 }

MyDbContext.cs

 public partial class MyDbContext: DbContext
    {
        public MyDbContext()
        {
        }

        public MyDbContext(DbContextOptions<MyDbContext> options)
            : base(options)
        {
        }

        public virtual DbSet<Customers> Customers { get; set; }
        public virtual DbSet<Users> Users{ get; set; }



        protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
        {
            if (!optionsBuilder.IsConfigured)
            {
                   // ..............
            }
        }

CustomersViewModel.cs

 class CustomersViewModel
    {
        public ObservableCollection<Customers> Customers { get; set; }

        public CustomersViewModel()
        {

            using (MyDbContext db = new MyDbContext())
            {
                Customers = new ObservableCollection<Customers>(db.Customers.ToList());
            }
        }
    }

На мой взгляд, я привязываю ViewModel к комбинированному списку:

<Window.Resources>
        <ViewModels:CustomersViewModel x:Key="CustomerViewModel"/>
    </Window.Resources>
...

  <ComboBox x:Name="cboCustomers" Grid.Row="2" 
                          DataContext="{StaticResource CustomerViewModel}" 
                          ItemsSource="{Binding Customers}" 
                          DisplayMemberPath="Customer"/>

Это прекрасно работает. Однако (это может быть глупый вопрос), если я хочу добавить больше запросов, таких как получение клиентов по Id, группирование клиентов по определенному столбцу или обновление клиента, где мне нужно будет добавить их?

   Customers = new ObservableCollection<Customers>(db.Customers.Where(....))..

В классе Viewmodel? Конструктор ViewModel на данный момент получает всех клиентов.

1 Ответ

1 голос
/ 04 февраля 2020

если я хочу добавить больше запросов, таких как получение клиентов по идентификатору, группирование клиентов по определенному столбцу или обновление клиента, где мне нужно будет добавить их?

Например, в сервисе, с которым вы внедряете модель представления, например:

class CustomersViewModel
{
    private readonly ICustomerService _customerService;

    public ObservableCollection<Customers> Customers { get; set; }

    public CustomersViewModel(ICustomerService customerService)
    {
        _customerService = customerService;
    }
}

Затем модель представления может вызывать операции со службой на основе взаимодействия с пользователем, например, для пример нажатия кнопки.

Реализация службы отвечает за подключение к базе данных, например, с использованием Entity Framework через уровень доступа к данным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...