2013-07-11 15 views
22

Ho il seguente metodo Repository: -La Calcola espressione percorso deve fare riferimento a una proprietà di navigazione definita dal tipo

public AccountDefinition GetCustomer2(int id) 
{ 
    var c = entities.AccountDefinitions 
      .Where(p=>p.ORG_ID==id) 
      .Include(a => a.SDOrganization) 
      .Include(a2 => a2.SiteDefinitions) 
      .Include(a3 => a3.SDOrganization.AaaPostalAddresses) 
      .Include(a4 => a4.SiteDefinitions.SelectMany 
           (a5 => a5.DepartmentDefinitions.SelectMany 
            (a6 => a6.SDUsers.Select 
              (a7 => a7.AaaUser)))) 
                .SingleOrDefault(); 

    return c; 
} 

Il seguente metodo di azione che chiama il metodo di cui sopra: -

public ActionResult Details2(int id = 0) 
{ 
    AccountDefinition cd = repository.GetCustomer2(id); 
    return View("copy",cd); 
} 

ma quando ci si dirige verso il metodo d'azione, ottengo il seguente errore sul classe repository: -

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.

Quindi cosa c'è di sbagliato nel mio codice?

risposta

29

penso che si può decidere di fare qualcosa di simile

public AccountDefinition GetCustomer2(int id) 
     { 

      var c = entities.AccountDefinitions.Where(p=>p.ORG_ID==id) 
       .Include(a => a.SDOrganization) 
       .Include(a2 => a2.SiteDefinitions) 
       .Include(a3 => a3.SDOrganization.AaaPostalAddresses) 
       .Include(a4 => a4.SiteDefinitions.Select(a5 => a5.DepartmentDefinitions.Select(a6 => a6.SDUsers.Select(a7 => a7.AaaUser)))); 

      return c; 
     } 
+0

grazie per la risposta, ma la SDOrganization non avere un .Selezionare. E se scrivo il tuo codice avrò il seguente errore: - "" Errore 'TMS.Models.SDOrganization' non contiene una definizione per 'Seleziona' e nessun metodo di estensione 'Seleziona' accetta un primo argomento di tipo ' TMS.Models.SDOrganization 'potrebbe essere trovato (ti manca una direttiva using o un riferimento di assembly? "" –

+7

Vedo, quindi il problema è probabilmente SelectMany, cambia SelectMany a Select invece. –

+1

Sono rimasto bloccato su qualche altro problema ma ur risposta mi ha indirizzato nella giusta direzione –