1

私は通常、CRUD メソッドをカプセル化し、拡張メソッドを単純化するリポジトリ パターンのサンプルを目にします。DbContext で簡単に使用できるリポジトリ メソッドを作成するのは非常に面倒でした。理由が DbContext とアプリケーション全体の間の疎結合を作成することである場合は、DbContext をインターフェイスに抽出してアプリケーション全体で使用することで、これを既に行うことができます。

そのため、単純なメソッドなどは、リポジトリでラップするのではなく、リポジトリのメンバーとして DbContext にアクセスする方がよさそうです。どう思いますか ?

4

2 に答える 2

4

原則として、私は StriplingWarrior のアイデアに同意しますが、ビジネス レイヤーが DbContext プロパティ/メソッドを使用するより単純なアーキテクチャを構築している場合、特に DbContext のインターフェイスを使用してそれを注入している場合は、何も問題はありません。

簡単にモック可能にするために、DbSet の代わりに IDbSet を使用することも忘れないでください。

于 2011-02-11T21:25:29.950 に答える
1

DbContext をビジネス ロジック内で直接使用したり (天国では禁止されています!) 表示ロジック コードを使用したりすることは、"関心の分離" の原則に対する深刻な違反であり、コードを次のようにする傾向があります。

  • 保守が困難: DbContext の作成方法をリファクタリングすることにした場合は、コード ベース全体を調べて、すべての を変更する必要がありますnew DbContext
  • 単体テストが難しい: Entity Framework コンテキストは「モック」が難しいことで知られていますが、インターフェイスの単純なリポジトリ メソッドは簡単にモックしてサンプル データを返すことができます。
于 2011-02-11T20:42:57.017 に答える