@lucky4

Как избежать дублированности наименования?

Есть продукт, каждый новый продукт должен отличаться названием. Как написать функцию, которая будет просматривать не совпадает ли найменование нового товара с любым другим товаром ?

public async Task<ProductDto> AddAsync(ProductDto item)
        {
            Product product = _mapper.Map<Product>(item);

            if (!await _unitOfWork.ProductRepository.IsDublicated(product.Label))
            {
                throw new DataDublication("Label already exists.");
            }

            await _unitOfWork.ProductRepository.AddAsync(product);

            return _mapper.Map<ProductDto>(product);
        }


public async Task<bool> IsDublicated(string label)
        {
            bool flag = false;

            var check = await _context.Set<Product>()
                .FirstOrDefaultAsync(property => property.Label.ToLower() == label.ToLower());

            return flag;
        }


Знаю, что проблема в функции IsDublicated, что возврощает все время false. Но, не понимаю, как мне закинуть соотвествующий статус после выполнения...
  • Вопрос задан
  • 47 просмотров
Решения вопроса 2
sarapinit
@sarapinit Куратор тега C#
Точу водой камень
IsDublicated все время возвращает false потому что написана неверно. Вы инициализируете флаг потом возвращаете его без изменений.
Попробуйте так
public async Task<bool> IsDublicated(string label)
{
     var existedProduct = await _context.Set<Product>()
                .FirstOrDefaultAsync(property => property.Label.ToLower() == label.ToLower());
     return existedProduct != null;
}


И в функции AddAsync у вас неверное условие. Должно быть:
if (await _unitOfWork.ProductRepository.IsDublicated(product.Label))
{
     throw new DataDublication("Label already exists.");
}
Ответ написан
firedragon
@firedragon
Не джун-мидл-сеньор, а трус-балбес-бывалый.
Выбирайте из продуктов по StartWith после парусите индекс выбирайте максимальный и вставляйте добавив 1
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы