【发布时间】:2020-02-04 21:02:08
【问题描述】:
我是 WPF 新手,我正在尝试在我的 WPF 应用程序中实现 MVVM 模型。我有这个场景:一个客户模型、一个客户视图、一个 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 的构造函数,目前获取所有客户。
【问题讨论】:
-
创建一个新类,例如 DBLayer 类,您将在其中拥有所有这些方法。让您的 ViewModel 实例化此类的一个对象并在需要时使用其方法