問題タブ [asp.net-mvc-controller]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
performance - Dynamic Linq クエリをより効率的にするにはどうすればよいですか
動的クエリを処理する mvc コントローラー関数を作成しました。うまく機能していますが、より複雑なクエリを使用すると、応答時間が 15 秒も遅くなります。ObjectQuery.ToTraceString を使用して SQL を取得し、データベースに対して実行しました。応答時間は 1 ~ 2 秒で、サーバーが同じクエリに応答するのにかかる時間とは大きく異なります。
これが私のコードです:
このコードは、次のようなリクエストを処理することになっています。
上記のようなクエリには約 700 ミリ秒かかりますが、もっと複雑なことをしようとすると、クロールまで遅くなります (15 秒):
特に、ナビゲーション プロパティが問題のようです。これを削除すると、クエリが大幅に高速化されます (3 秒)。
私が提供するコードでは、IEnumerable を反復処理するのに時間がかかるようです。データを渡し、基になる MVC コードに必要な変換を行わせます。ただし、自分で反復するか、ToList 関数を使用すると、同様に応答時間が遅くなります。
これらのエンティティを取得するための長い一時停止の原因について、何か考えがある人はいますか?
アップデート
データベースにインデックスを追加して速度を上げましたが、linq でクエリを実行するには、SQL で実行するよりも 20 ~ 30 倍の時間がかかります。
c# - MVC コントローラーのプライベート変数
MVC アーキテクチャについて質問があります。
私は、WCF サービスからデータを収集するクラスを持っています。それを「WCFDataAccess」と呼びましょう。このクラスは、データを取得または設定するためのさまざまなメソッドを公開します。
MVC のホーム コントローラーの内部では、この「WCFDataAccess」クラスを使用して、各ルートのデータを収集する必要がよくあります。
インデックス ルートは、WCFDataAccess オブジェクトのインスタンスを作成し、データを収集する可能性があります。'IndexDetails' などの別のルートでも、データを収集するために WCFDataAccess オブジェクトのインスタンスを作成する必要があります。
「WCFDataAccess」クラスのインスタンスをホーム コントローラー内のプライベート変数にすることで、パフォーマンスに悪影響を与えることなく共有できますか? コントローラ クラスに 2 つのリクエストが同時に入った場合、プライベート変数の使用はどのように機能しますか?
さらに考えられるのは、HttpContext.Current.Cache クラスを使用することです。
助言がありますか?
ありがとう!
c# - この mvc アクションを削除する必要があります
私はちょうど mvc 4 (および一般的な mvc) に入ったばかりで、このアクション コードは大丈夫なのか、それとももう一度削除する必要があるのか 疑問に思っています。
基本的に、常駐注文が存在しない場合は作成します。これは、システム内でこれが発生する必要がある唯一の場所です。
そのコードをリポジトリから削除する必要がありますか?
db は私の IUnitOfWork です