Моя цель - проверить, существует ли имя объекта в моей базе данных EF Core, если это так: вывести конкретную ошибку.Тем не менее, я получаю 500 внутренних ошибок сервера.
Сначала я создал индекс по имени в DbContext, включая IsUnique и некоторый код для перехвата исключения в хранилище.
Можно ли добавить что-нибудь в контроллер, которыйговорит, что если errorcode == 2601 то выдает "обязательное исключение"?Или есть другой способ преодолеть эту ошибку 500?Заранее благодарим за помощь!
DbContext :
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Car>()
.HasIndex(c => c.Name)
.IsUnique();
}
Хранилище :
public async Task<bool> SaveAsync()
{
try
{
return (await _context.SaveChangesAsync() >= 0);
}
catch (DbUpdateException dbEx)
{
SqlException sqlException = dbEx.InnerException as SqlException;
if (sqlException.Number == 2601)
{
throw new Exception("Name already exists. Please provide a different name.");
}
throw new Exception(dbEx.Message);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
}
Контроллер :
Public async Task<IActionResult> AddCar([FromBody] Car car)
...
if (!await _repository.SaveAsync())
{
throw new Exception("Fail on save...");
}
...