sql >> データベース >  >> RDS >> Sqlserver

EntityFrameworkのコア数に最適なパフォーマンスがありません

    ここで答えることはあまりありません。 ORMツールが単純なLINQクエリから期待されるSQLクエリを生成しない場合、クエリを書き直すことによってそれを実行させる方法はありません(そして、そもそもそれを実行するべきではありません)。

    EF Coreには、LINQクエリでのクライアント/データベースの混合評価の概念があります。 これにより、あなたの場合のように、不完全/非常に非効率的なクエリ処理でEFCoreバージョンをリリースできます。

    EFコアにない機能 からの抜粋 (ないという単語に注意してください )およびロードマップ

    間もなく、彼らはクエリ処理を改善することを計画していますが、それがいつ発生し、どの程度の程度になるかはわかりません(混合モードではクエリが「機能している」と見なすことができます)。

    では、オプションは何ですか?

    • まず、EF Coreが本当に役立つようになるまで、EFCoreに近づかないでください。 EF6に戻ります。そのような問題はありません。
    • EF6を使用できない場合は、最新のEFCoreバージョンで最新の状態を維持してください。

    たとえば、v1.0.1とv1.1.0の両方で、クエリを実行すると目的のSQL(テスト済み)が生成されるため、アップグレードするだけで具体的な問題は解消されます。

    ただし、改善に伴い、新しいリリースではバグ/リグレッションが発生することに注意してください(ここで確認できるように、EFCoreが単純なLEFTOUTER結合に対して返される列が多すぎます たとえば)、自己責任で行ってください(最初のオプションをもう一度検討してください。つまり、どちらがあなたに適しているか :)



    1. varcharとnvarcharの違いは何ですか?

    2. SQLデータベースにアドレスを保存するためのベストプラクティス/標準

    3. LinuxターミナルでのMySQLの使用の簡単な紹介

    4. SQL Server v.Next:STRING_AGG()のパフォーマンス