web-dev-qa-db-ja.com

なぜDapperを使用する必要があるのですか? Dapper Vs ADO.NETの長所と短所について誰でもコメントできます

誰かがDapperの使用を本当に考える必要があるのはいつかを理解したいと思います。また、私はDapperとADO.NETを比較することの長所と短所を理解したいと思います

27
Divya

Dapperは単なるツールです。それがする

  • クエリを正しくパラメータ化するのが簡単になります
  • クエリ(スカラー、複数行、マルチグリッド、および結果なし)を簡単に実行できるようにします。
  • 結果をオブジェクトに簡単に変換できるようにする
  • 非常に効率的かつ迅速に

それがしないことは:

  • あなたのためにクラスモデルを生成する
  • クエリを生成します
  • オブジェクトとその変更を追跡して、SubmitChanges()(または何でも)を呼び出すことができます

生のdapperライブラリはCRUD機能を提供しませんが、「contrib」追加パッケージdoesは基本的なCRUDを提供します。

基本的に、フルウェイトORMではありませんが、ORMをfightせずにクエリを実行する場合、または関連するオーバーヘッドを支払う場合ORMを使用すると、非常に優れています。 SQLを知らない場合、生のライブラリはおそらくあなたには向いていませんが( "contrib"は問題ないはずですが)、多くの人がknowSQL、しかし、彼らは制御するのSQL(ORMに最適化されていない意図の解釈などをさせるのではなく)。

要約すると、理由は次のとおりです。

  • 最小限のオーバーヘッドで優れた生の実行パフォーマンスが必要な場合
  • sQLの制御を保持したい
  • 全脂肪ORMのオブジェクト追跡機能は必要ないか、必要ありません

「vs ADO.NET」に関して:

  • 生のADO.NETには、lotより多くのコードを記述し、覚えておくべき多くのエッジケースが含まれます(dapperは、心配する必要なく内部で処理します)
  • しかし、実際には高速ではありません-dapperは、クエリに必要なことを行った後、戦略を格納および再利用するために多くのメタプログラミングを実行します
  • 生のADO.NETで利用できないプロバイダー固有の機能(たとえば、SqlGeometryデータの受け渡し/フェッチ)を使用している場合、それらは直接ではありませんdapperのavailalbe-シナリオの処理方法を伝えるインターフェースを実装する必要がありますが、それは難しくありません(特定のSqlGeometryの例は追加のdapperライブラリ)
57
Marc Gravell