4

次のうち、正しいもの、または少なくとも最良のものはどれですか。

コントローラーでデータを取得するメソッドを作成します。

public ActionResult Index()
{
    var list = _context.MyClass.Take(10);
    return View(list);
}

またはコンテキストを直接使用します。

public ActionResult Index()
{
    var list = MyClass.MethodWrapperToGet(10);
    return View(list);
}

最初の懸念事項は、データベースが公開されすぎていることです。開発者が誤用しやすくなります。

4

2 に答える 2

0

理想的には、_context を公開するバリエーションを使用して、そのコンテキストを依存性注入を介して渡すことができるため、コントローラーの単体テストを実行できます。

少なくとも .Net では、静的呼び出しをテストするのは非常に困難です。

于 2012-12-20T18:17:21.167 に答える
0

それは本当にプロジェクトのサイズに依存します。小さなものや簡単なプロトタイプの場合、コントローラーがDbContext直接アクセスするオプションを使用します。

public ActionResult Index()
{
    var list = _context.MyClass.Take(10);
    return View(list);
}

私は個人的にコンサートを別々にすることを好みます。つまり、コントローラに必要なデータを正確に渡すサービス クラスを作成します。Controller はタスクの実行方法を認識すべきではなく、何の後に何を実行する必要があるかを認識すべきであることに注意してください。

もちろん、これはリポジトリ パターンを実装する必要があるという意味ではありません。必要に応じて、サービス クラスから にDbContext直接アクセスできます。

于 2012-12-19T20:22:45.630 に答える