シーケンスには、System.Web.HttpのSystem.Linq.Enumerable.SingleOrDefault [TSource](IEnumerable`1 source)の複数の要素が含まれています。 .OData.Builder.ODataConventionModelBuilder.DiscoverInheritanceRelationships()..。
これが私のバインディングコードです:
var modelBuilder = new ODataConventionModelBuilder();
modelBuilder.EntitySet<PeopleDto>("People");
これが私のコントローラーコードです:
[Queryable]
public IEnumerable<PeopleDto> Get(
[FromUri] Credentials credentials,
ODataQueryOptions<PeopleDto> options,
int departmentId,
DetailLevel detail = DetailLevel.Low)
{
var count = _repository.Filter(x => x.DepartmentId == departmentId && x.Active);
options.ApplyTo(count);
int total = count.Count();
switch (detail)
{
case DetailLevel.Low:
return new Paginable<PeopleDto>(GetMyPeopleLo(departmentId, options), total);
// [...]
}
}
Paginable<T>
を実装しIEnumerable<T>
ます。また、GetMyPeopleLo()
(本名ではなく)メソッドは、オプションを追加のクエリに適用します。(ページネーションコードの場所を移動したので、追加のクエリはもう必要ありませんが、その部分はまだリファクタリングしていません)。
これは、プレリリースバージョンのoDataに問題があるケースの1つですか?
更新:属性をコメントアウトするQueryable
と機能するように見えますが、オプションがクエリに適用されるときに、クエリ文字列で指定したフィルターは実際には適用されませんcount
。