2014-11-18 11 views
34

Quando si tenta di espandere una proprietà di navigazione tramite lambda in questo modo:Breeze Sharp - si espande a lavorare con l'espressione lambda

query = query.Expand(x => x.Dealers); 

La mia domanda non riesce con

This is a failure message

Eccezione interna

Inner Exception

Messaggio eccezione interna:

L'espressione 'x => x.Dealers' non è un'espressione valida per il percorso di navigazione. Le uniche operazioni supportate all'interno del corpo dell'espressione lambda sono MemberAccess e TypeAs. L'espressione deve contenere almeno un MemberAccess e non può terminare con TypeAs.

Eppure, quando si tenta di espandere tramite un parametro stringa:

query = query.Expand("Dealers"); 

Tutto sembra funzionare correttamente.

mio "Regione" Breeze entità cliente:

public class Region : BaseEntity 
{ 
    public Region(); 

    public NavigationSet<Dealership> Dealers { get; set; } 
    public string Name { get; set; } 
    public Region Parent { get; set; } 
    public int? ParentId { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int RegionId { get; set; } 
    public string ShortName { get; set; } 
    public RegionType Type { get; set; } 
} 

mio Concessionaria navigazione entità:

public class Dealership : BaseEntity 
{ 
    public Dealership(); 

    public DateTime ActiveFrom { get; set; } 
    public DateTime? ActiveTo { get; set; } 
    public Brand Brand { get; set; } 
    [ForeignKey("Brand")] 
    public int BrandId { get; set; } 
    public string DealerCode { get; set; } 
    public DealerGroup DealerGroup { get; set; } 
    [ForeignKey("DealerGroup")] 
    public int? DealerGroupId { get; set; } 
    public virtual NavigationSet<DealerIR> DealerIRs { get; set; } 
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)] 
    [Key] 
    public int DealershipId { get; set; } 
    public bool IsActive { get; set; } 
    public string Line1 { get; set; } 
    public string Line2 { get; set; } 
    public string Line3 { get; set; } 
    public string Line4 { get; set; } 
    public string Line5 { get; set; } 
    public string Name { get; set; } 
    public string PostCode { get; set; } 
    public Region Region { get; set; } 
    [ForeignKey("Region")] 
    public int RegionId { get; set; } 
} 

Il mio ultimo tentativo è stato quello di rendere la relazione di chiave esterna esplicita tramite il "ForeignKey" l'annotazione di dati, ma l'errore risultante è sempre lo stesso.

Sto usando breeze sharp v0.6.0.3.

UPDATE 1: Non è la stessa esatta query di sopra, ma lo stesso risultato. Solo uno screenshot dal codice sorgente di Breeze.Sharp che ho attraversato. ingrandisci here

enter image description here

+0

Che cosa significa la query originale assomiglia? cioè "query" nell'esempio –

+1

Ciao Jay, la query originale è: EntityQuery query = new EntityQuery (); Con una nota leggermente diversa, ho risolto un altro problema di espansione dovuto al fatto che non avevo le mie "molte" proprietà di navigazione impostate su "NavigationSet" (erano semplicemente solo Elenco <>) sulle entità Breeze del mio cliente . Sono in procinto di correggerlo in tutto il mio oggetto grafico. Potrebbe essere correlato? – ProxyTech

+0

Ho cambiato tutte le proprietà di navigazione in NavigationSet <> ... ancora nessun dado. Aggiorneremo OP con il pezzo di codice Breeze.Sharp dove fallisce ... forse sarà d'aiuto .. – ProxyTech

risposta

1

Prova come segue

query = query.ToList().Expand(val => val.Dealers); 
+0

Non penso che il metodo di estensione Expand sia disponibile anche su Linq2Objects? – ProxyTech

+0

Per favore aggiungi una spiegazione alla tua risposta. –

1
query = query.Include(val => val.Dealers); 
+3

aggiungi spiegazione con il codice. – Sandeep

Problemi correlati