2016-04-08 7 views
0

In meinem Controller ich bin auch Waagen und RZiS wie diesMVC5 kombinieren db .INCLUDE mit SortiertNach

Analysis1Full analysis1Full = db.Analysis1Full 
           .Include(u => u.Balance) 
           .Include(r => r.RZiS) 
           .SingleOrDefault(u => u.Analysis1FullId == id); 
//enter code here 

es mir richtiges Objekt gibt. Der Punkt ist, dass ich Balance nach Zeichenkette (Year) sortieren will. Aber es gibt mir eine Fehlermeldung:

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

Fehler:

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.

Antwort

0

Der Grund, warum die Ausnahme ausgelöst wird ist einfach, weil es auf diese Weise ausgelegt ist. Gemäß MSDN enthält die Include() nur Gibt die verwandten Objekte an, die in die Abfrageergebnisse aufgenommen werden sollen.

Um die Kinder in einer Reihenfolge haben, können Sie eine SortiertNach() hinzufügen, wenn sie Zugriff auf oder würden Sie sie in einer anderen Abfrage laden müssen.

0

Ich löste es so ... es funktioniert

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(); 

halten Sie es guter Ansatz ist?

+0

Es ist in Ordnung, denken Sie daran, dass Sie auf diese Weise mehrere Aufrufe an die DB auslösen werden. – Szeki

+0

Also gibt es eine Möglichkeit, es in einer Abfrage zu tun? – Blue

+0

Wenn Sie nur eine Abfrage wünschen, holen Sie einfach den Artikel ohne Bestellung (wie zuvor) und bestellen Sie die IC-Salden, wenn Sie auf diese Eigenschaft zugreifen. Auf diese Weise wird im Speicher sortiert - diese Lösung hat die Nachteile, wenn Sie riesige Objekte haben. Es ist also eine Kompromiss-Situation und Sie müssen den Weg wählen, der am besten für Sie funktioniert. – Szeki