Ich habe ein Problem mit einem OData-Controller, der im Vergleich zu den anderen, die ich habe, ein wenig ungewöhnlich ist. Es ist das erste, das vollständig aus dem Speicher arbeitet - keine Datenbank beteiligt.OData schluckt Objekte in Navigationseigenschaft
Die zurück Einheit ist:
public class TrdRun {
[Key]
public Guid Identity { get; set; }
public TrdTrade [] Trades { get; set; }
TrdTrade ist auch ein Unternehmen Satz (die, wenn Abfragen geht gegen eine Datenbank). Aber in diesem speziellen Fall möchte ich alle mit einem Lauf verknüpften Trades als aktiv zurückgeben, und zwar OHNE zur Datenbank zu gehen.
Mein Problem? Der folgende Code:
[ODataRoute]
public IEnumerable<Reflexo.Api.TrdRun> Get(ODataQueryOptions options) {
var instances = Repository.TrdInstance.AsEnumerable();
var runs = new List<Reflexo.Api.TrdRun>();
foreach (var instance in instances) {
runs.Add(Get(instance.Identifier));
}
return runs;
}
richtig konfiguriert läuft die Trades haben initialisiert - aber WebAPI beschließt, sie zu schlucken.
Wie kann man es so konfigurieren, dass die Daten "wie angegeben" ohne weitere Filterung zurückgegeben werden? Ich kenne das AutoExpandAttribute (das ich gerne vermeiden würde - ich möchte nicht, dass die API-Klassen mit OData-Attributen markiert sind), aber ich habe Query nicht aktiviert, daher würde ich erwarten, dass die zurückgegebenen Daten zurückgegeben werden, wenn ich sie einrichte.