2014-11-18 8 views
34

Wenn ich wie so eine Navigationseigenschaft über Lambda zu erweitern versuchen:Breeze Sharp - Erweitern Sie arbeiten nicht mit Lambda-Ausdruck

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

Meine Anfrage mit

This is a failure message

Interne Ausnahme

nicht

Inner Exception

Inner Exception Meldung:

Der Ausdruck 'x => x.Dealers' ist kein gültiger Ausdruck für den Navigationspfad. Die einzigen unterstützten Operationen innerhalb des Lambda-Ausdruckskörpers sind MemberAccess und TypeAs. Der Ausdruck muss mindestens einen MemberAccess enthalten und darf nicht mit TypeAs enden.

Doch wenn ich versuche, über einen String-Parameter zu erweitern:

query = query.Expand("Dealers"); 

Alles scheint richtig zu arbeiten.

Meine "Region" Breeze Client-Entität:

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; } 
} 

Meine Dealership Navigationseinheit:

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; } 
} 

Mein letzter Versuch die Fremdschlüsselbeziehung explizit über die "ForeignKey" Daten Anmerkung zu machen war, aber der resultierende Fehler ist immer noch derselbe.

Ich benutze Brise scharf v0.6.0.3.

UPDATE 1: Es ist nicht die exakt gleiche Abfrage wie oben, aber das gleiche Ergebnis. Nur ein Screenshot aus dem Breeze.Sharp-Quellcode, durch den ich gegangen bin. Größeres Bild here

enter image description here

+0

Was bedeutet die ursprüngliche Abfrage aussehen? "Abfrage" in Ihrem Beispiel –

+1

Hallo Jay, ursprüngliche Abfrage lautet: EntityQuery Abfrage = neue EntityQuery (); Ich habe ein anderes Problem gelöst, das ich hatte, weil ich meine "vielen" Navigationseigenschaften nicht auf "NavigationSet" gesetzt hatte (sie waren einfach nur List <>) auf meinen Client-Breeze-Entitäten . Ich bin dabei, das in meinem Objektgraphen zu korrigieren. Könnte es verwandt sein? – ProxyTech

+0

Ich habe alle Navigationseigenschaften auf NavigationSet <> ... noch keine Würfel geändert. Wird OP mit dem Breeze.Sharp Code Stück aktualisieren, wo es versagt ... vielleicht wird es helfen .. – ProxyTech

Antwort

1

wie folgende Versuche

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

Ich glaube nicht, dass die Erweiterungsmethode Expand sogar auf Linq2Objects verfügbar ist? – ProxyTech

+0

Bitte fügen Sie eine Erklärung zu Ihrer Antwort hinzu. –

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

fügen Sie Erklärung mit dem Code hinzu. – Sandeep