ODataコントローラに問題がありますが、他のものと比べて少し珍しいです。それはメモリから完全に作業した最初のものであり、データベースは含まれていません。ODataナビゲーションプロパティ内のオブジェクトを飲み込む
返されるエンティティは次のとおりです。
public class TrdRun {
[Key]
public Guid Identity { get; set; }
public TrdTrade [] Trades { get; set; }
TrdTradeも、エンティティセット(クエリがデータベースに反するいる場合)です。しかし、この特定のケースでは、実行に関連しているすべての取引を返却したいのですが、データベースに行くことなくこれを行います。
私の問題?次のコード:
[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;
}
正しく実行すると、取引が初期化されますが、WebApiはそれらを飲み込むことにします。
さらにフィルタリングせずにデータを「指定されたとおりに」返すように設定するにはどうすればよいですか?私はAutoExpandAttributeについて知っています(これは避けたいものですが、OData属性でマークされたAPIクラスは必要ありません)。しかし、クエリを有効にしていないので、設定したときに返されるデータが返されると思います。