#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 для успешного/неудачного выполнения и строки сообщения об ошибке, в которой указывается причина сбоя.