ローカルデータベース(SQL Express経由)とEntity FrameworkをORMとして使用して、 WPFでプロジェクトに取り組んでいます。
Viewクラスと同じ数のViewModelを実装したいと思います。1対1の関係の一種で、MVVMを実装するための良い方法だと聞きました(同意しない場合は、理由を教えてください)。これについての私のビジョンは、すべてのViewModelがそのビューを提供することです(つまり、 Modelレイヤーによって提供されるデータベースからのデータを共有します)。
したがって、すべてのビューには、一種の使用人であるViewModelがあります。;)
この概念を実装しているときに、問題に遭遇しました...少なくとも2つのViewModelが、データベースに保存されているすべての顧客の最近のリストを取得したいとします。
この場合、私は何をしますか?これらのすべてのViewModelに(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
上記と同じコードで静的に作成しますが、静的として歌います。FooClass
そのようなものはしばらくすると混乱の大きな山になるので、それはあまり賢くありません。
より賢い解決策は見つかりません。私が巧妙な方法でそれをコーディングする方法をあなたは知っていると確信しています。だから私を助けてください。多くのViewModelに同じ機能を提供するにはどうすればよいですか?