Search code examples
c#odata

Optional parameter odata function c#


I define a function for GeminiTickets like this:

var geminiTickets = builder.EntitySet<GeminiTicket>("GeminiTickets");

        var geminiTicketsParam = geminiTickets.EntityType.Collection
            .Function("GetNewTickets")
            .Returns<ReportDataVM>();
        geminiTicketsParam.CollectionParameter<int>("projectIds");
        geminiTicketsParam.Parameter<DateTime?>("startDate");
        geminiTicketsParam.Parameter<DateTime?>("endDate");

in GeminiTicketsController...

public async Task<IHttpActionResult> GetNewTickets([FromODataUri] List<int> projectIds, DateTime? startDate = null, DateTime? endDate = null) {...};

When I want to access this function with all parameters, everything is fine: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3],startDate=2016-06-10,endDate=2016-06-22)

But if I send no parameter at all of if I try to send e.g. only projectIds, IIS gives me a 500 Internal Error: http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])

I found that we can set a parameter to be optional:

geminiTicketsParam.Parameter<DateTime?>("startDate").OptionalParameter = true;

But it's doing nothing. Any idea ?

Thank you!


Solution

  • OptionalParameter means it can be null, you can try with

    startDate=null,endDate=null