現在、次のように 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 フィルターを渡すにはどうすればよいですか?