我正在尝试分层我的 WP 应用程序并遵循 MVVM 模式。我有一个带有 ICommand 的 VM,它在单击 View 上的按钮时运行。单击按钮现在运行 ICommand 所指向的方法,该方法使用 linq 从 DB 检索数据。
这是我的虚拟机的外观。
public class CategoryViewModel : INotifyPropertyChanged
{
// Category type is a table in my DB.
private Category _currentCategory;
public Category CurrentCategory
{
get { return _currentCategory; }
set
{
if (value != _currentCategory)
{
_currentCategory = value;
OnPropertyChanged("CurrentCategory");
}
}
}
// Helper method hooked with ICommand via RelayCommand class.
// not posting RelayCommand class code here.
private void GetCategory()
{
using (CategoryDBContext ctx = new CategoryDBContext(CategoryDBContext.ConnectionString))
{
CurrentCategory = ctx.Categories.FirstOrDefault();
}
}
}
这是我的视图的外观。
<TextBlock Text="{Binding CurrentCategory.CategoryName}" />
<Button Command="{Binding GetCategoryCommand}" Content="Click me"/>
我正在尝试实现一个实现通用存储库和一个工作单元类,并在某种程度上遵循本文中提到的想法。如果您现在稍微滚动到 "Creating a Generic Repository" ,您会发现使用 DbSet< TEntity > 因为它们使用的是 EF。在 WP 中相当于什么?
我怎样才能在 WP 应用程序中做类似的事情?我不想在我的虚拟机中使用任何数据访问代码。它应该去哪里?此外,我想实现通用存储库的原因是避免创建多个存储库类,如 CategoryRepositoy、ProductRepositoy 等。我的模型中已经有所有 POCO 类。