【发布时间】:2012-11-05 19:00:33
【问题描述】:
我正在 WPF 中开发项目,使用本地数据库(通过 SQL Express)和 Entity Framework 作为 ORM .
我想实现与 View 类一样多的 ViewModels。 1 对 1 的关系,我听说这是实现 MVVM 的好方法(如果您不同意,请分享为什么 )。我对此的看法是,每个 ViewModel 都服务于它的 View(即,共享来自 Model 层提供的数据库的一些数据)。
所以每个View 都有它的ViewModel,这是一种仆人。 ;)
在实现这个概念的过程中,我遇到了一个问题...假设至少有 2 个 ViewModels 想要获取存储在数据库中的所有客户的最新列表。
在这种情况下我会怎么做?我必须将此代码添加到所有这些 ViewModels(针对DRY):
public ObservableCollection<Customer> Customers;
private ObservableCollection<Customer> GetAllCustomers()
{
var oc = new ObservableCollection<Customer>();
using (var db = new MyDbContext())
{
var query = from b in db.Customers
orderby b.Surname
select b;
foreach (var customer in query)
{
oc.Add(customer);
}
}
return oc;
}
或者(或者)我会用我上面写的相同的代码来做一些静态的FooClass,但是用static。这不是很聪明,因为这样的FooClass 会在一段时间后变得一团糟。
我找不到任何更智能的解决方案。我相信你知道我应该如何以聪明的方式编码。所以请帮助我。我应该如何为许多 ViewModels 提供相同的功能?
【问题讨论】:
标签: entity-framework mvvm viewmodel dry