gpt4 book ai didi

entity-framework - WebApi OData : $filter 'any' or 'all' query not working

转载 作者:行者123 更新时间:2023-12-04 00:47:30 25 4
gpt4 key购买 nike

首先,使用 ASP.NET WebApi 教程我创建了一个基本的 ApiController that exposes an Entity Framework model through OData .该服务致力于为 OData $filter 查询返回 json。

当我执行 OData $filter queries that include "any" or "all"对多值属性的查询抛出 ODataException

这是我尝试使用的 OData 查询
~/api/Blogs?$filter=any(Tags,Name+eq+'csharp')
我的 ApiController 看起来像这样:

public class BlogController : ApiController
{
public BlogsController()
{
this.Entities = new BlogEntities();
}

public ContactEntities Entities { get; set; }

[Queryable(PageSize = 25, AllowedQueryOptions = AllowedQueryOptions.All)]
public IQueryable<Blog> Get()
{
return this.Entities.Blogs;
}
}

博客实体有这个契约(Contract)
public Blog {
public Guid ID { get; set; }
public string Title { get; set; }
public Tag Tags { get; set; }
}

public Tag {
public Guid ID { get; set; }
public string Name { get; set; }
}

抛出的异常
ODataException: Type 'Blog' does not have a property 'Name'

如您所见,我的代码中没有任何异常,并且一切正常。 Microsoft ASP.NET Web API OData 中是否可能不支持“any”和“all”查询? ?

最佳答案

你的任何需要改变一点。尝试这样的事情:

~/api/Blogs?$filter=Tags/any(tag: tag/Name eq 'csharp')

这是假设标签实际上返回标签的集合,而不仅仅是像上面那样的单个标签。

$inlinecount 仅支持 OData 格式的开箱即用。我在这里写了很多关于它的文章:

Web API OData Inlinecount not working

简短的回答是,您可以使用如下所示的代码使其适用于其他格式:

public PageResult<Customer> Get(ODataQueryOptions<Customer> queryOptions)
{
IQueryable results = queryOptions.ApplyTo(_customers.AsQueryable());
return new PageResult<Customer>(results as IEnumerable<Customer>, Request.GetNextPageLink(), Request.GetInlineCount());
}

关于entity-framework - WebApi OData : $filter 'any' or 'all' query not working,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15475593/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com