ODataQueryOptions не отвечает на свойство, которое является моим пользовательским классом

#asp.net #json #controller #odata

Вопрос:

У меня есть такая сущность, как эта

 public class MyDto
{
    public string string1;
    public string string2;
    public MyCustomClass myCustomClass;
}
 

У меня есть два контроллера, один из них полностью соответствует спецификациям Odata, содержит весь CRUD, все они работают хорошо.

И еще один использует другой маршрут, чтобы сделать подобную ерунду, как это:

 
[Route('newWay')] //did not use ODateRoutePrefix here
public class SecondController: ODataController
{
    [HttpPost]
    [Route('create')]
    public async Task<IActionResult> Create(...);

    [HttpPatch]
    [Route('update')]
    public async Task<IActionResult> Update(...);

/* Here's the problem */
    [HttpGet]
    [Route('get')]
    [EnableQuery]
    public async Task<IQuerable<MyDto>> Get(ODataQueryOptions<MyDto> option);
/* Here's the problem */
}

 

Когда сообщение , подобное этому newWay/get?$select=myCustomClass , показывает пустое значение Dto, подобное этому

 []
 

Когда сообщение , подобное этому newWay/get?$select=myCustomClass,string1 , показывает только строку 1, подобную этой

 [
    "string1": "balabala"
]
 

Но когда я публикую без свойства select, оно может возвращать все правильно

Так что же происходит с моим вторым контроллером?