Проблема реализации метода дочернего класса

Так что у меня возникла небольшая проблема... дело в том, что у меня есть базовый класс, который имеет реализацию для всех GET/POST/PUT/DELETE, и это класс Generic, так что, в основном, все, что я обновляю Entity, проходит через него и тогда у меня есть класс для моих сущностей, который реализует этот класс...

public virtual async Task<IHttpActionResult> Put([FromODataUri] TKey key)

Дело в том, что для одной из сущностей я хочу реализовать дополнительную логику перед обновлением базы данных, поэтому я подумал, что я просто делаю это на дочернем классе, а затем после этой новой логики я вызываю метод базового класса, и это должно помочь создал перегруженный метод

public override Task<IHttpActionResult> Put(int key){
     //NEW LOGIC
     return base.Put(key);
}

Проблема, с которой я сталкиваюсь, заключается в том, что, когда я делаю запрос от Клиента, если у меня не реализован этот новый метод, он работает нормально и вызывает метод base clase, и Entity обновляется, но после того, как я добавил это, используя точно тот же самый запрос ajax возвращает ответ 400... Кто-нибудь может мне помочь разобраться, что происходит? Большое спасибо:)

1 ответ

Вот выписка из документа

1.4.3 Обновление сущности.,, Сервисы МОГУТ дополнительно поддерживать PUT, но должны знать о возможности потери данных в свойствах кругового переключения, о которых клиент может заранее не знать, таких как открытые или добавленные свойства или свойства, не указанные в метаданных. Службы, поддерживающие PUT, ДОЛЖНЫ заменять все значения структурных свойств на значения, указанные в теле запроса.,,,

Я гарантирую вам, что OData не может разрешить маршрут, который вы указали, потому что он ищет PUT с моделью в качестве параметра, а затем также, вы можете иметь ключ. Следовательно, вы получаете ошибку #400.

Я не знаю, даже если, используя ODataRouteAttribute поможет

Другие вопросы по тегам