4

Hallo, ich bin relativ neu in Azure Mobile Apps und Entity Framework, so dass ich mich seit einiger Zeit mit folgenden Problemen herumschlagen muss.Abrufen von Modellen mit verschachtelten komplexen Typen von Azure Mobile Apps

Ich habe folgendes Modell auf einem azur mobilen app in .net:

public class Location : EntityData 
{ 
    public ProximityRange ProximityRange { get; set; }   
    public double Rssi { get; set; } 
    public DateTime TimeOfLocation { get; set; } 
} 

wo ProximityRange nur eine Container-Klasse für zwei weitere Eigenschaften ist

public class ProximityRange 
{ 
    public double Distance { get; set; } 

    public double Accuracy { get; set; } 
} 

Der Regler hat eine Methode hat zu bekommen alle Standorte nach einer Abfrage.

public IQueryable<Location> GetAllLocations() 
{ 
    var query = Query(); 
    return query; 

} 

Aber wenn ich den Controller anrufe bekomme ich nur einen JSON mit dem TimeOfLocation und dem Rssi.

In der DB-Tabelle des Unternehmens Ort habe ich 3 Spalten

ProximityRange_Accuracy, ProximityRange_Distance and Rssi 

Ich brauche alle drei Eigenschaften aus den Controller GetAllLocations als JSON-Objekt zu erhalten.

Ich habe versucht, mit $ expand = ProximityRange in der Abfrage, sondern wirft einen internen Fehler.

Ich habe auch versucht, ProximityRange als ComplexType zu deklarieren, aber auch kein Glück.

Würde ich jemand Hilfe sehr schätzen.

Antwort

2

In Azure Mobile Apps-Modellen können Sie (ohne Schwierigkeiten) keine komplexen Typen (wie DbGeography oder ProximityRange) verwenden. Die OData-Übersetzung behandelt diese nicht.

Die beste Idee ist es, es in eine Zeichenfolge zu übersetzen, dann implementieren Sie einen JSON-Encoder/Decoder. Die Klasse zu betrachten ist ein JsonConverter

+0

So meinen Sie vermeiden azure mobile Dienste, sondern erstellen Sie eine benutzerdefinierte API, die JSON-Anfrage und Antwort konvertiert. Verstehe ich richtig? – batmaci

+0

Nein - Sie können die Zeichenfolgendarstellung weiterhin über SDKs für mobile Apps übertragen. Sie müssen nur mit der Umwandlung in eine echte Geographie fertig werden. Dies liegt vor allem daran, dass verschiedene Plattformen die Geografie anders darstellen - es ist eine DbGeographie in der Datenbank, kann aber auch andere Darstellungen im clientseitigen Modell sein. –