0

現在、データ アクセスに 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)

これは一般的な問題でなければならないという事実にもかかわらず、小規模なアプリケーションでこの問題にどのようにアプローチするか (ベスト プラクティス) について満足のいく答えは見つかりませんでしたか?

4

1 に答える 1

2

MSDN の DbContext クラスの説明では、「作業単位とリポジトリ パターンの組み合わせを表します」と記載されているため、リポジトリ レイヤーとして機能できますが、そうする必要はなく、そうすることが意図されています。アプリ全体にグローバルなものを使用するのに適していない「作業単位」に使用されます。すべてに対して単一のものを維持するだけでなく、キャッシュされたデータやその他の望ましくないもの(メモリ使用量など)で問題が発生する可能性があります。

お役に立てれば。

于 2013-03-26T19:44:06.393 に答える