質問: 私は本当に何が良いですこの答えを検索することに不満です - 伝統的なSystem.Data.SqlClientのアプローチやEFやDapperのような任意のORMを使用して私は多くのリンクを介して多くの比較を見てきました、 1. https://github.com/StackExchange/dapper-dot-net ![ここに画像の説明を入力](https://i.stack.imgur.com/KWLiA.png) 2. 3. ORMと従来のデータベースクエリは、どちらのフィールドですか? 私が理解できることの1つは、手作業で書かれた従来のSQLコードは、他のどのアプローチよりもパフォーマンスが優れています。しかし、私たちがすでに最良のアプローチをしていれば、なぜORMであるのでしょうか? DataLayerコードを減らしたいからですか?私たちのデータベースを管理したいと思っていませんし、C#コード(コード/データの最初のもの)にすべてを書きたいと思っています。 EFが導入された理由は、コード管理だけで問題があったならば、ORMにも限界があります。なぜ、どのようにパフォーマンスが向上し、クエリの実行速度が低下するのでしょうか。 私の質問に答えて、編集が必要な場合は教えてください。 私の唯一の懸念は、スピードと私のウェブサイトのパフォーマンスです。 前もって感謝します。
回答: 私はあなたの質問に私の経験に基づいて答えようとします: 1. なぜORMですか? ORMは、Model-Firstアプローチでは非常に優れています。あなたのモデル(あなたのクラス、オブジェクト、エンティティなど)を持っているときに、それをいくつかのストレージ(たとえばDB)に保存することに決めました。そして、ここであなたは適切なORMを取って、「大丈夫、このクラスはこのテーブルに行きます」などと伝えます。そして、この方法であなたの開発時間を短縮します。もちろん、マッピングにいくらかのオーバーヘッドがあります。しかし、私の経験では、マッピングに関するパフォーマンス上の問題はありませんでした。他のすべての部分(DBクエリ、UIレンダリング、WCFなど)ではパフォーマンスの問題がありましたが、ORMマッピングではありませんでした。したがって、ORMは開発時間を短縮し、パフォーマンスを**あまり**低下させ**ません** 。 2. ORMは複製を減らし、複雑さを軽減し、開発時間を大幅に短縮します。 3. C#ですべてを書いていますか?部分的に - はい。 ORMは強力なマッピングを提供するので、intとstringを比較したり、nullをnull値ではないプロパティに設定するなどの愚かな間違いをすることはほとんど不可能です。したがって、LINQプロバイダを使用するORMは、コードの保護を提供します。 4. パフォーマンスに関する懸念は誇張されています。もちろん、EF(または他のORM)は手書きSQLコードよりも遅いです。私は99%のケースでEFがあなたを満足させ、このコードを維持するのがはるかに簡単であると確信しています。自己保護され、自己説明されています。 だから、数字を見ないでください。彼らは実生活と共通するものはありません。追加が必要な場合は、私は説明しようとします。