質問: **Entity Frameworkを使用する場合、ESQLはLinq to Entitiesよりもパフォーマンスが優れていますか?** 私はエンティティにLinqを使うことを好む(主に強い型チェックのために)が、私の他のチームメンバーの何人かはESQLを使う理由としてパフォーマンスを挙げている。どちらの方法を使用するかについての長所/短所の詳細を知りたいと思います。
回答: 最も明白な違いは次のとおりです。 実体へのLinqは、素晴らしいクエリ理解構文を含む、強く型付けされたコードです。 「選択」の前に「開始」があるという事実は、IntelliSenseがあなたを助けることを可能にします。 Entity SQLは、SELECTステートメントがFROMの前にくる構文のような、より身近なSQLを使用した従来の文字列ベースのクエリを使用します。 eSQLは文字列ベースであるため、動的クエリは実行時に文字列操作を使用して従来の方法で構成できます。 それほど明白ではない主な違いは次のとおりです。 エンティティへのリンクでは、 'select new {...}'構文を使用して、形状を変更したり、クエリの結果を必要な形状に「投影」したりできます。 C#3.0で新たに追加された匿名型はこれを可能にしました。 常にObjectQuery を返す必要があるため、Entity SQLを使用した射影は不可能です。シナリオによってはObjectQuery を使用することもできますが、.Selectは常にObjectQuery を返すという事実を回避する必要があります。下記のコードを参照してください。 ``` ObjectQuery query = DynamicQuery(context, "Products", "it.ProductName = 'Chai'", "it.ProductName, it.QuantityPerUnit"); public static ObjectQuery DynamicQuery(MyContext context, string root, string selection, string projection) { ObjectQuery rootQuery = context.CreateQuery(root); ObjectQuery filteredQuery = rootQuery.Where(selection); ObjectQuery result = filteredQuery.Select(projection); return result; } ``` こことここで詳細にチームメンバーの一人によって説明される他のより微妙な違いがあります 。