4

現在、次のように oData フィルター要求を使用して Web API を実行しています。

public IQueryable<OrganizationViewModel> Get(ODataQueryOptions<Organization> oDataQuery)
{
    var query = new FindOrganizationsQuery(oDataQuery);
    var result =_findOrganizationsQueryHandler.Execute(query);
    return result.Organizations.Select(o => new OrganizationViewModel { Id = o.PublicId, Name = o.Name });
}

ハンドラーは次のようになります。

public FindOrganizationsQueryResult Execute(FindOrganizationsQuery request)
{
    var organizations = request.ODataQuery.ApplyTo(_mgpQueryContext.Organizations).Cast<Organization>();            
    return new FindOrganizationsQueryResult(organizations);
}

クエリ クラスは次のようになります。

public class FindOrganizationsQuery
{
    public FindOrganizationsQuery(ODataQueryOptions<Organization> oDataQuery)
    {
        ODataQuery = oDataQuery;
    }
    public ODataQueryOptions<Organization> ODataQuery { get; set; }
}

そのため、リクエストで oData フィルタを渡すと、適切に処理され、すべて正常に機能します。

しかし、ここでは、型 ODataQueryOptions を Get 操作に渡す代わりに、次のような FindOrganizationsQuery クラスを使用したいと考えています。

public IQueryable<OrganizationViewModel> FindOrganizations(FindOrganizationsQuery query)
{
    // query is null
}

ただし、クエリ パラメータは常に null です。ODataQueryOptions パラメーターが別のクラスにある場合、oData フィルターを渡すにはどうすればよいですか?

4

1 に答える 1