まず、ASP.NET WebApi チュートリアルを使用して、OData を介して Entity Framework モデルを公開する基本的な ApiController を作成しました。このサービスは、OData $filter クエリの json を返すように機能します。
複数値プロパティに対して「任意」または「すべて」のクエリを含むOData $filter クエリを実行すると、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;
}
}
ブログ エンティティにはこのコントラクトがあります
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で「任意」および「すべて」のクエリがまだサポートされていない可能性はありますか?