長年の潜伏者、初投稿、EF4 と MVC3 の新規学習。
この場合、正しいデータ読み込み戦略を使用していることを確認するための支援と、クエリの詳細を最終決定するための支援が必要です。私は現在、約 10 個のテーブル (すべて FK 関係がある) からの少量のデータを必要とする「ダッシュボード」ビューのために、ここで概説した熱心な読み込みアプローチを使用しています。
var query = from l in db.Leagues
.Include("Sport")
.Include("LeagueContacts")
.Include("LeagueContacts.User")
.Include("LeagueContacts.User.UserContactDatas")
.Include("LeagueEvents")
.Include("LeagueEvents.Event")
.Include("Seasons")
.Include("Seasons.Divisions")
.Include("Seasons.Divisions.Teams")
.Where(l => l.URLPart.Equals(leagueName))
select (l);
model = (Models.League) query.First();
ただし、まだ解決できていないデータのフィルタリング、並べ替え、整形を追加で行う必要があります。この点からの私の主なニーズ/懸念は次のとおりです。
いくつかの子オブジェクトにはまだ追加のフィルタリングが必要ですが、構文や最適なアプローチはまだわかりません。例: "TOP 3 LeagueEvents.Event WHERE StartDate >= getdate() ORDER BY LeagueEvents.Event.StartDate"
いくつかのフィールドをソートする必要があります。例: ORDERBY Seasons.StartDate、LeagueEvents.Event.StartDate、LeagueContacts.User.SortOrder など。
私はすでに、このクエリによって生成される SQL の全体的なサイズと結合の数について非常に懸念しており、全体として別のデータ読み込みアプローチが必要になる可能性があると考えています (明示的な読み込み? 複数の QueryObjects? POCO?)。
これらの残りのニーズを解決し、最高のパフォーマンスを確保する方法についての入力、指示、またはアドバイスは大歓迎です。