2016-10-20 4 views
0

Ich versuche, mehrere Spalten aus dieser Tabelle Person zu bekommen. Aber ich scheine nur eine Eigenschaft hier zu bekommen (Address). Warum kann ich hier keine Mehrfachauswahl treffen?Kann nicht mehrere Auswahlmöglichkeiten für eine Tabelle für Spalten

largeThings = DbContext.Set<Things>() 
       .Where(ep => ep.CreatedDate > dateTimeYesterday) 
       .Include(ep => ep.People 

        .Select(p => p.Person) 
        .Select(p => p.Address)).ToList(); 

Ich habe versucht, wie ein anonymes Objekt zu verwenden:

largeThings= DbContext.Set<Episode>() 
       .Where(ep => ep.CreatedDate > dateTimeYesterday) 
       .Include(ep => ep.People 
        .Select(p => p.Person) 
        .Select(p => new { p.Address, p.FirstName })).ToList(); 

Aber das wirft eine Eigenschaft Fehler Navigation. Gibt es eine andere Möglichkeit, mehrere Spalten hier auszuwählen?

Ich möchte in der Lage FirstName und Address aus dieser Person Tabelle zu bekommen.

+0

Sie erhalten Adresse, weil Sie nur Adresse auswählen. Bitte zeigen Sie den genauen Fehler von Ihrem zweiten Versuch –

+0

Im ersten Beispiel. Ich möchte eine Auswahl hinzufügen, um eine andere Spalte von 'Person' zu erhalten. Wenn ich ein anderes Select hinzufüge, geht es nur tiefer in das Objekt hinein, was ich nicht möchte. –

+0

'Der Include-Pfad muss sich auf eine Navigationseigenschaft beziehen, die für den Typ definiert ist. Verwenden Sie gepunktete Pfade für die Referenznavigationseigenschaften und die Navigationseigenschaften für den Operator "Auswahl für die Sammlung". –

Antwort

0

Sie können Include nicht verwenden, um nur paar Spalten aus der anderen Tabelle zu erhalten. Sie erhalten sie entweder alle oder müssen benutzerdefinierte Auswahlen verwenden, um nur die gewünschten Daten zu erhalten.

largeThings = DbContext.Set<Things>() 
       .Where(ep => ep.CreatedDate > dateTimeYesterday) 
       .Select(ep => new {ep, ep.People.Select(p => new {p.Person, p.Address})}); 
0

Der Zweck Include ist in der Abfrage führt das gesamte Objekt zu schließen.

Wie ich verstehe, dass es eine 1 zu 1 Beziehung zwischen der Things Klasse und der People Klasse, haben also einen Blick auf den folgenden Code:

largeThings = DbContext.Set<Things>() 
    .Where(ep => ep.CreatedDate > dateTimeYesterday) 
    .Select(ep => new 
     { 
      ep.People.Person, 
      ep.People.Address 
     }).ToList(); 
Verwandte Themen