Как исключить свойство в запросе полезной нагрузки в чванстве - PullRequest
0 голосов
/ 10 января 2019

У меня ниже конечной точки в ASP.Net Core 2.1 с EF Core 2.1

  public class CustomerController
{
    public IActionResult Post([FromBody]CustomerTO customer)
    {

    }

    public IActionResult Get(int id)
    {
        var customer = _dal.GetCustomer(id);
        return Ok(customer);
    }
}

CustomerTO выглядит как

public class CustomerTO
{
    public int CustomerId { get; set; }
    public string CustomerName { get; set; }

    //others
}

Теперь проблема в документах Swagger, полезная нагрузка запроса для POST включает CustomerId: 0 (однако необязательно)

Таким образом, потребитель API передает CustomerId = someInt в запросе POST, так как его свойство Identity в EF Core Dal выдает ошибку

Cannot insert value on Identity column...

Эта ошибка вполне очевидна и приемлема,

каково мое требование, как я могу сообщить Swagger, что CustomerId не является частью полезной нагрузки запроса в запросе POST?

Создание отдельного DTO для Get & Post выглядит непростой задачей.

Спасибо !!

1 Ответ

0 голосов
/ 11 января 2019

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

[JsonProperty(NullValueHandling = NullValueHandling.Ignore]
public int? CustomerId { get; set; }

Тогда, если у него есть значение, оно будет присутствовать, иначе оно не будет частью объекта JSON.

Однако, если вам нужно изменить несколько разных свойств или добавить / удалить материал только для запроса или более подробного ответа, тогда @DarjanBogdan верен: вам просто нужно использовать разные классы для каждого.

...