我是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;
}
}
然后,视图模型可以根据用户交互(例如按钮单击(调用对服务的操作。
服务实现负责连接到数据库,例如通过数据访问层使用实体框架。