2016-10-19 9 views
3

Использование OData V3 (#REF) или V4 (#links) с в WebAPI Controller 2+ и обработки отношений:WepApi 2 OData контроллер Post/Помещенный Relationsips/Link/Рефов с коммутатором Заявление

Возможно переключение ведомостям единственный путь?

Эти 2 ресурса для каждых кажутся необходимыми для случая переключения для каждого свойства навигации.

  • Entity Relations in OData V3
  • Entity Relations in OData V4

    switch (navigationProperty) 
    { 
        case "Supplier": 
         // Note: The code for GetKeyFromUri is shown later in this topic. 
         var relatedKey = Helpers.GetKeyFromUri<int>(Request, link); 
         var supplier = await db.Suppliers.SingleOrDefaultAsync(f => f.Id == relatedKey); 
         if (supplier == null) 
         { 
          return NotFound(); 
         } 
    
         product.Supplier = supplier; 
         break; 
    
        default: 
         return StatusCode(HttpStatusCode.NotImplemented); 
    } 
    

Вопрос: Я должен жесткий код переключателя заявление для каждого свойства навигации, и если да, то есть ли способ, чтобы этот автомобиль -магически эшафот?

+0

Пожалуйста, добавьте пример кода и/или включите пример сценария –

+0

Добавлен образец кода из ссылок. – ttugates

ответ

2

У меня возникла проблема с этим (v4), и я решил это с помощью базового контроллера example. Есть 2 базовых контроллера: для навигации (ваш случай) и CRUD-операций - 3-й пример использования. Код не такой чистый (я пытался удалить ненужные данные), но я думаю, что идея довольно ясна. Я не думаю, что это лучший способ решить эту проблему, но я не нашел более простой способ добавления и удаления свойств по строкам. Я хотел бы узнать более элегантный ответ. Извините за мой английский.

+1

Спасибо, что нашли время ответить на этот вопрос и создать GitHubGist. Мне нравится ваше решение. И вы отвечаете на вопрос stackOverflow на иностранном (вам) языке. Не за что извиняться. – ttugates

 Смежные вопросы

  • Нет связанных вопросов^_^