WPF - 在 MVVM 中添加 CRUD 操作的位置



我是WPF的新手,我正在尝试在我的WPF应用程序中实现MVVM模型。我有这样的场景:客户模型,客户视图,CUstomersViewModel和Dbcontext类。

模范客户.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)
{
// ..............
}
}

客户视图模型.cs

class CustomersViewModel
{
public ObservableCollection<Customers> Customers { get; set; }
public CustomersViewModel()
{
using (MyDbContext db = new MyDbContext())
{
Customers = new ObservableCollection<Customers>(db.Customers.ToList());
}
}
}

在我看来,我正在将视图模型绑定到组合框:

<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 的构造函数获取所有客户。

如果我想添加更多查询,例如按 Id 检索客户、按特定列对客户进行分组或更新客户,我需要在哪里添加这些查询?

例如,在注入视图模型的服务中,例如:

class CustomersViewModel
{
private readonly ICustomerService _customerService;
public ObservableCollection<Customers> Customers { get; set; }
public CustomersViewModel(ICustomerService customerService)
{
_customerService = customerService;
}
}

然后,视图模型可以根据用户交互(例如按钮单击(调用对服务的操作。

服务实现负责连接到数据库,例如通过数据访问层使用实体框架。

最新更新