Проверка в методе post

#c#

Вопрос:

Clase modelo

 public class SDN  {  [Key]  public int Id { get; set; }  public int Codigo {get; set;}  public string nit { get; set; }  public string nombre { get; set; }  public string telefono1 { get; set; }  public string telefono2 { get; set; }  public string direccion { get; set; }  public string email { get; set; }  public string codciudad { get; set; }  public string codtipo { get; set; }  }  

Clase DTO

 public class SdnDTO  {    public int Id { get; set; }  public int Code { get; set; }  [Required(ErrorMessage = "The field SDN Nit is required ")]  public string nit { get; set; }  [Required(ErrorMessage = "The field SDN Nombre is required ")]  public string nombre { get; set; }  public string telefono1 { get; set; }  public string telefono2 { get; set; }  public string direccion { get; set; }  public string email { get; set; }  public string codciudad { get; set; }  public string codtipo { get; set; }    }  

//Репозиторий

 public async Tasklt;TEntitygt; Insert(TEntity entity)  {  try  {  centralContext.Setlt;TEntitygt;().Add(entity);  await centralContext.SaveChangesAsync();  return entity;  }  catch (Exception ex)  {  throw ex;  }   }  

// Обслуживание

 public async Tasklt;TEntitygt; Insert(TEntity entity)  {  return await genericRepository.Insert(entity);  }  

У меня есть этот метод в моем контроллере

 /// lt;summarygt;  /// Metodo Insert  /// lt;/summarygt;  /// lt;param name="sdnDTO"gt;lt;/paramgt;  /// lt;returnsgt;lt;/returnsgt;  [HttpPost]  public async Tasklt;IHttpActionResultgt; Post(SdnDTO sdnDTO)  {  if (!ModelState.IsValid)  return BadRequest(ModelState);  try  {  var sdn = mapper.Maplt;SDNgt;(sdnDTO);  sdn = await sdnService.Insert(sdn);  return Ok(sdn);  }  catch (Exception ex) { return InternalServerError(ex); }  }  

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

Комментарии:

1. Можете ли вы показать свой sdnService. Метод вставки? Логика выполнения того, о чем вы просите, скорее всего, будет добавлена к этому методу, а не к контроллеру. Затем вы можете отправить результат обратно в контроллер для обработки и вернуть клиенту, а не возвращать OK для каждого результата без исключения.

2. Спасибо, я уже добавил это

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

Ответ №1:

В вашем сервисе перед выполнением вставки вы можете позвонить в свой репозиторий, чтобы узнать, возвращаются ли какие-либо результаты, соответствующие коду. Если это так, вы можете вернуть плохой результат обратно в свою службу, которая затем передаст его обратно контроллеру. Вы можете определить объект результата, который инкапсулирует эту логику с помощью bool для успешного/неудачного выполнения и строки сообщения об ошибке, в которой указывается причина сбоя.