序列在 System.Web.Http.OData.Builder.ODataConventionModelBuilder.RemoveBaseTypeProperties(EntityTypeConfiguration derivedEntity, EntityTypeConfiguration baseEntity) 在 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 的预发布版本存在问题的情况之一吗?
更新:如果我注释出该Queryable
属性,它似乎有效,但是在将选项应用于count
查询时,我将无法实际应用在QueryString中指定的任何过滤器。