2016-04-08 1 views
0

で.INCLUDE dbの組み合わせ。ポイントは、私は天気をfiled(年)で並べ替えることです。しかし、それは私にエラーを与える:MVC5は、私はそれは私に権利オブジェクトを提供します。この</p> <pre><code>Analysis1Full analysis1Full = db.Analysis1Full .Include(u => u.Balance) .Include(r => r.RZiS) .SingleOrDefault(u => u.Analysis1FullId == id); //enter code here </code></pre> <p>などの残高とRZiS含むてる私のコントローラでのOrderBy

Analysis1Full analysis1Full = db.Analysis1Full 
           .Include(u => u.Balance.OrderBy(y => y.Year)) 
           .Include(r => r.RZiS) 
           .SingleOrDefault(i => i.Analysis1FullId == id); 

エラー:それはこのように設計されているため

An exception of type 'System.ArgumentException' occurred in EntityFramework.dll but was not handled in user code

Additional information: The Include path expression must refer to a navigation property defined on the type. Use dotted paths for reference navigation properties and the Select operator for collection navigation properties.

答えて

0

例外がスローされた理由は単純です。 MSDNによると、Include()のみクエリ結果に含める関連オブジェクトを指定します。

子どもを注文するには、OrderBy()を追加するか、別のクエリで読み込む必要があります。

0

私はそれが

Analysis1Full analysis1Full = db.Analysis1Full.Find(id); 

     analysis1Full.Balance = db.Balances.Where(t=>t.Analysis1FullId == analysis1Full.Analysis1FullId).OrderBy(y=>y.Year).ToList(); 
     analysis1Full.RZiS = db.RZiS.Where(t => t.Analysis1FullId == analysis1Full.Analysis1FullId).OrderBy(y => y.Year).ToList(); 

を働いている...このようにそれを解決しますが、それは良い方法だと思いますか?

+0

このようにして、DBへの複数の呼び出しをトリガーすることに注意してください。 – Szeki

+0

それで、1つのクエリでそれを行う方法はありますか? – Blue

+0

1つのクエリのみが必要な場合は、(前と同じように)注文なしでアイテムを取得し、そのプロパティにアクセスするときに残高を注文します。こうすることで、ソートはメモリ内で行われます。このソリューションでは、巨大なオブジェクトがあるとパフォーマンスが低下します。だからトレードオフの状況で、あなたにとって最適な方法を選ぶ必要があります。 – Szeki

関連する問題

 関連する問題