2016-06-22 4 views
0

나는이 같은 GeminiTickets에 대한 함수를 정의 :선택적 매개 변수 중 하나로, OData 기능 C#을

GeminiTicketsController에서
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"); 

이 ...

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

나는 모든 매개 변수를 사용하여이 기능에 액세스하려면, 모든 것이 괜찮습니다 : http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3],startDate=2016-06-10,endDate=2016-06-22)

하지만 매개 변수를 보내지 않으면 예를 들어 보내려고합니다. 단지 projectIds는 IIS 나에게 500 내부 오류를 제공합니다 :

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

을하지만 아무것도하지 않는 것 : http://example.com/odata/GeminiTickets/Service.GetNewTickets(projectIds=[1,2,3])

는 우리가 선택 사항이 될 수있는 매개 변수를 설정할 수 있습니다 것을 발견했다. 어떤 생각?

감사합니다.

답변

1

OptionalParameter는 당신은 내가 이런 짓을 마지막에

startDate=null,endDate=null 
+0

그래으로 시도 할 수 있습니다, 그것은 null이 될 수 있다는 것을 의미합니다. 그래서 자바 스크립트에있는 각 매개 변수를 확인하고 값이 있는지 살펴보아야합니다. 그렇지 않으면 null로 매개 변수를 채 웁니다. 데이터베이스에서 모든 매개 변수 정의를로드해야하기 때문에 사용자가 설정 한 매개 변수의 값이 실제로 필요하기 때문에 나쁘다. – Sproulx