Web Api для частичного изменения атрибутов модели - Web Api 2 - PullRequest
0 голосов
/ 22 февраля 2019

Я новичок в ASP.NET MVC 5 Web Api 2 с подходом на основе кода и автоматом, у меня есть модель Currency и я создал для нее DTO (CurrencyDto) и хочу создать Api для изменения атрибутов существующих валют (некоторые атрибуты не все атрибуты) , после поиска в Интернете я обнаружил, что метод PATCH может изменять некоторые атрибуты модели вместо метода PUT, который должен быть нацелен на все атрибуты модели.Мой код выглядит следующим образом. Модель валюты:

public class Currency
    {
        public int ID { get; set; }

        [Required]
        public string CurrencyName { get; set; }

        [Required]
        public string CurrencyDescription { get; set; }
    }

CurrencyDto

public int ID { get; set; }

        public string CurrencyName { get; set; }

        public string CurrencyDescription { get; set; }

Контроллер API

[HttpPatch]
        public IHttpActionResult UpdateCurrency(int id, CurrencyDto currencyDto)
        {
            if (!ModelState.IsValid)
                return BadRequest();

            var currencyinDB = _context.Currencies.SingleOrDefault(c => c.ID == id);

            if (currencyinDB == null)
                return NotFound();

            currencyDto.ID = currencyinDB.ID;
            Mapper.Map(currencyDto, currencyinDB);
            _context.SaveChanges();

            return Ok();
        }

Профиль отображения

public MappingProfile()
        {
            Mapper.CreateMap<Currency, CurrencyDto>();
            Mapper.CreateMap<CurrencyDto, Currency>();
        }

проблема заключается в том, что при обновлении валюты и изменении только одного атрибута (CurrencyDescrition) появляется внутренняя ошибка сервера 500. В чем здесь может быть проблема?Как подготовить API для редактирования некоторых атрибутов модели (не всех)?

...