現在、データ アクセスに EntityFramework を使用する最初の MVVM アプリケーションを作成しています。アプリケーションは基盤となるデータベースに大きく依存しており、多くの場合、DB に新しいデータを追加する必要があります。
ただし、ViewModel 内で ObjectContext を呼び出すことが適切かどうかはわかりません。例えば
public class SomeViewModel : ViewModelBase
{
public IEnumerable<User> AllUsers { get; private set; }
private void SomeMethod()
{
var __entities = new DatabaseEntities();
AllUsers = __entities.Users.Where(...).ToList();
}
}
このような解決策を見てきましたが、それに伴っていくつかの質問があります。たとえば、ObjectContext が実際に存続する期間や、グローバルにアクセス可能な単一の ObjectContext を優先する必要があるかどうかなどです。
それとも、そもそもそのような呼び出しは VM の一部であってはなりませんか? 現在、各 DB テーブルに StaticHelpers のように実装し、GetAllUsers() のようなメソッドを使用することも想像できます。
Josh Smith の MVVM に関するサンプル アプリケーションでは、各 VM のコンストラクタに注入されたリポジトリを使用しています。
public AllCustomersViewModel(CustomerRepository customerRepository)
これは一般的な問題でなければならないという事実にもかかわらず、小規模なアプリケーションでこの問題にどのようにアプローチするか (ベスト プラクティス) について満足のいく答えは見つかりませんでしたか?